如何用6个月搞定C++

提到c++做过项目的人,都会扔下一句,这玩意短期内很难学的很熟练,更不要说弄的精通,没有做过项目的人觉得C++和java差不多啊,就是面向对象一些基本应用,掌握了对象的一些概念,以及一些属性基本上差不多了。其实整体而言c++的里面的泛型编程,以及类模板,模板类等基本概念特别在初级做项目的小伙伴来说,能把程序编译通过简直太难了。

那么为什么要学习c++?

C++算是距离C语言比较近的语言,算是比较靠低的语言里面还能展示面向对象,越是年龄大点的程序员越是觉得C++越用越有意思,对开源代码有点研究的或者看过开源代码的人,很多很标准的开源软件里面对于C++编程技巧运用的炉火纯青,第一眼的感觉是让你看不懂,然后等你费劲巴拉的把源码看懂之后,然后对作者倍加佩服,如同品老酒一番,越来越觉得编程有意思,C++有味,从知识体系框架完善程度来看也是有必要玩耍之。

目前linux开源软件里面以及windows程序里面,C++程序的占比还是相当大,特别是现在很流行的游戏开发用c++用法的占比也很高,所以从语言的普及率上面也是要有必要拿出精力学习。在移动互联网迅猛发展的中国,一位C++自身工程师感叹了一句,发现周围的人都去转行去做java了,在中国应用级的开发已经远超底层框架的设计人员,不知道从长远来看是好事还是坏事,其实c++程序的占比在欧美还是极高的,还是主流的开源语言,这也就是为什么开源软件大多数都是c++的原因。

如何自学C++,怎么才能学好?

第一步:确立学习的决心,因为很多学习编程,学校开设的第一个编程课大部分是C语言,很多开设C++的同学就觉得怎么开始上来就学习C++啊,是不是有点早了啊,自己真倒霉之类的词语。其实无论是先学C语言还是c++其实从本质上来说差别不是特别大,因为都是比较靠近底层的语言而且对于自己知识框架的完善都有着极大的好处,关键是既然选择了,就要拿出学习的魄力,有些刚工作的小伙们可能有这样的疑问,觉得自己同学入门java拿到的工资比做C++高很多,就觉得自己没有希望了,觉得选错了方向,其实C++学到深层次,对系统体系把握性很强的话,基本上都是底层系统支撑人员,工资以及发展方向,还能差哪里去,关键还是持之以恒的决心。

第二步:选择一到两本经典的教材,学书本学习是最原始的学习方法,用书本学习能让你全心的去思考一个理论的框架,然后根据在大脑中建立的知识框架去实践去理论,去在电脑上面操作,反复的这么去思考,去练习。这其中肯定会遇到不懂得,想不出的,就可以找到对应的视频,看看找到思维的疑惑点,然后按照教材的顺序继续学习。教材后面的课后题目还是要独立的去完成,在电脑上都有所体现。在这过程肯定有人会疑惑为啥不直接参加培训,参加培训起码有点基础,而且现在培训所有的日程都安排的满满的。很难有自己调整的时间。基础差的在培训的时候很多,在中途就退出了。受不了这种煎熬。小编觉得c++ primer plus这本书比较经典适合,有人可能觉得c++ primer 更加有名气,其实个人觉得c++ primer 更加适合当做字典来使用,里面的细节讲的太繁琐了。一家之言,不喜勿喷。

第三步:选择一个编译器,目前来说市面关于c++的编译器真是多入牛毛,而且现在大量小伙伴还在用vc++6.0,建议大家不要去用这个了,和最新的标准有些差异,而且调试的时候容易崩溃退出。

编译可以使用vs系列,或者dev c++,或者codeblocks,选择一个顺手的就可以,找到正确的编译之后就要学会调试程序,很多小伙伴在看书的时候,发现没见调试的章节啊,做过项目的小伙伴都知道有些大型程序出现问题了,崩溃或者内存泄露问题了,只看一对眼睛是远远不够的,所以就需要一种工具,就是编译器的一种功能调试,开始学的时候不要觉得程序简单,就不想学习调试,调试是编程基本功的一种。

第四步:开始具体的学习,具体学习过程中,不要着急去实践,先把基本的理论彻底搞清楚再进一步实践,假如学习for循环,所谓的循环就是一遍遍的重复去执行,但是重复的次数是有循环条件满足的次数来决定的,不满足条件不循环,这就和do while有了本质的区分。那么我们举例说明一下

#include<iostream>

using namespace std;

int main()

{

int i;

for(i=0;i<= 10;i++)

cout<<i<<endl;;

}

这个程序主要循环判断点就在i <= 10 这个直接决定了循环的次数这个决定循环的关键。如果有关循环的不懂,就可以在网上找对应的视频去学习,或者加一些技术群去学习,在互联网上面自学的人还是喜欢找一些和自己水平差不多的人一起学习的。每个基本概念都这么搞定理论然后再去实践,坚持下去基础慢慢也就有了。

第五步:在基础部分学的差不多了,所谓的学的差不多了,基本上面向对象的基本概念以及指针,文件流操作这些基本概念差不多的情况下,算是初级基础,下一步的学习就是泛型编程的级别了,比如常见list,vector等模板类的使用了。在这学习泛型之前就可以做一些简单的操作了,比如简单的小项目,简单计算器,电梯的模型,贪吃蛇小游戏等等,这些里面可能还涉及到线程或者进程的概念,同步或者异步的概念。尝试去修改一些这些程序的代码或者自己设计一套解决的方案。在有了这些的基础上就可以,进一步学习泛型编程,泛型编程学到差不多一半,或者直接去公司学,都可以。其实学到这种阶段,基本上算是初级入门阶段已经完成,可以考虑写好自己的简历,去参加工作了。如果觉得还是学的不过瘾,可以学习Qt开源,去做一些小工具,让自己玩的更嗨,到这个阶段其实也是编程到了比较有意思的阶段,因为心里会想着能做什么软件了之类的等等,如同刚学会了开车,见到车就想开境界。

基本上能坚持到第五步的阶段,基本上算是到入门阶段了。其实做到第五步,起码需要三个月的阶段甚至更长的时间,整体来说c++比c语言更加难学一些,因为规则上面繁琐的多,不像c语言那么随意

真正的刻苦的有方向的,自学的话,半年的时间更加准确些。在这个方向之下6个月时间结束之后,基本上就能加入码农的阶段。兴趣和毅力在学习编程过程中缺一不可。加油吧,noob

本文属原创,禁止转载

针对想学习C++小伙伴联盟推出(如何学习C++)系列读物

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-10-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PPV课数据科学社区

您知道 ”学习 Python 的三种境界“是什么吗?看~这里有答案!

前言 王国维在《人间词话》中将读书分为了三种境界:“古今之成大事业、大学问者,必经过三种之境界:‘昨夜西风凋碧树,独上高楼,望尽天涯路’。此第一境也。‘衣带渐宽...

3048
来自专栏Java架构师学习

优秀程序员都具备的五点特性,这些你都有吗?一、 编程能力二、面向对象思维能力三、软实力(学习能力,沟通能力,表达能力)四、利用工具的能力五、创造力(解决问题的能力)

作为一个在it行业混的老鸟,一直有一个疑虑:自己究竟要做到什么程度才算得上优秀?一个优秀程序员(指工资比一般程序员高的那种)最重要的能力是什么?写代码的最高境界...

1232
来自专栏blackheart的专栏

[程序设计语言]-00:目录

1. 开篇概览  前一周写了一篇博文“记-码农的“启蒙”之《程序设计语言-实践之路》和《面向对象分析和设计》两书”,其中说打算总结下这两本书中有哪些收获,就是关...

1995
来自专栏iOSDevLog

时间管理笔记(总结)

38110
来自专栏华章科技

最多金的编程语言Top10:Python第3,R第10,你猜第1是谁?

本文绝非标题党,而是基于大量数据和为期两周的深入探究,在18年初,对IT行业的现状、趋势以及预测进行客观观察,让大家对编程语言有一个更清晰的认识,以选择最值得花...

2682
来自专栏钱曙光的专栏

一周极客热文:C\C++代码优化的27个建议

极客头条上周最受大家关注的和被广泛讨论的是:《C/C++代码优化的27个建议》,这27个黄金建议很是实用,下面我列举一二。 跳转和分支执行代价高,如果可能,尽量...

2095
来自专栏二进制文集

《代码大全》读书笔记

早就听说过这本书,但是一直没有勇气读。一方面是因为书太厚,另一方面听说是十几年前的书就没有了兴趣。

2324
来自专栏web前端教室

学会JS只是知道了“是什么”,并不意味着你会用JS做什么

假设有这样一个需求,“在一堆人里,选出5个人,每个人给一个包子”。这个需求如果用js来描述,该怎么做呢? 如果用中文来描述,应该是类似这样的一个东西: func...

2317
来自专栏函数式编程语言及工具

scala泛函编程是怎样被选中的

      现在计算机技术发展现象是:无论硬件技术如何发展都满足不了软件需求;无论处理器变得能跑多快,都无法满足软件对计算能力的需要。按照摩尔定律(Moore...

2117
来自专栏Python中文社区

十本书教你从Pythoner通往Pythonista

1、Python基础教程 本书是经典教程的全新改版,作者根据Python 3.0版本的种种变化,全面改写了书中内容,做到既能“瞻前”也能“顾后”。本书层次鲜明、...

44710

扫码关注云+社区

领取腾讯云代金券