虽然在学校期间有学过C语言,但没认真学,当时各种一脸懵逼。可以说是零基础起步。我先学的C语言,那时认为应该先打基础,再学C++。这次重新捡起书本,历时4个月,10月份参加的考试,前两天成绩下来,顺利通过。回头看这几个月,有汗水,有收获,总结如下。

入门阶段我花了2个月时间,看的是这本书《C语言程序设计 现代方法》-K.N.King著。这本书很厚,但是写的非常好,概念解释的很详细透彻,简单易懂。还有一些易混淆的知识点也有指出。等基本功打牢之后,再来看教材就很轻松了。

自考的C++教材里不会去教一些C的基本知识,如常量、变量、函数、循环、指针等等,而是直接切到面向对象的部分。因为这本书假定的是考生有一定的C语言基础。看教材的时候能明显发现中西方的思维差异。西方的思维方式很有逻辑性,一点点推进,层层解释,学完之后思维是连贯的,每敲一行代码,心里会明白为什么要这么写,这行代码的执行的逻辑。而我们强调的实用性,只告诉这么做,而不去说为什么,这样的结果只能去照着例子画葫芦,为什么这么写?不知道,只知道例子是这么写的。整本书东一榔头西一棒槌,知识点很散,连贯性非常差,若基本功不扎实学起来特别费劲,时不时还会冒出来一些本不该在本章出现的专业名词。最不能忍的是这个教材竟然还是08年版的!!!这都2910年了还在用十年前的教材!比如第一章第二个例子按照最新的C++标准来看就是错的!搞笑的是个别知识点为了篇幅说一半就不说了,让考生自己去查找相关资料。。。给人的感觉这根本不是一本教材,而是一篇超长的C++概览,走马观花的介绍了一下C++就没了。好在这门课明年开始换用2020新版,希望内容能够与时俱进,后面的考生也少走弯路少遭罪。

C++向下兼容了C语言,但反之不兼容,是C语言的真超集。C语言是一门面向过程的语言,而C++是更多的是着重面向对象这部分,因为兼容C,所以C++也叫做混合语言。我的观点认为,C++是在C的基础上加了class类,这是C++称为面向对象语言的依据核心,也是C++自考教材的核心部分,至于基础部分几乎一致。刚开始可以笼统的把C++的class类理解为C语言的struct结构,二则很相似。甚至完全可以用C当作面向对象语言来用,当然开发效率肯定不如C++了,因为少了很多类的功能。这么说只是大概普及一下C++和C的差异。

关于C++的学习路径,我其实不太推荐先学C再学C++,他们本来就是一个体系的,打个比方说。一个是兰博基尼(C++),一个是桑塔纳(C)。都是小汽车,你会开桑塔纳,兰博基尼上手虽然能开走,但是里面一些列丰富的功能可能就一头雾水了。但是反之如果原先是开兰博基尼的,换成开桑塔纳自然也不可能不会开。所以如果可选,为什么不选择起手就学开兰博基尼呢?

关于书本的选择,尽量还是选择歪果仁英文原版或者翻译本,从最基本开始介绍的那种。不是崇洋媚外,有时候不得不承认对于一些精确的和抽象的概念,歪果仁表达的更清楚,倒不是因为他们聪明,而是英语的语义优势决定的。中文属于表意文字,语义模糊,且中文句子允许没有主语,日常对话感觉不出来,但是一旦以文字表达的时候,句子容易造成歧义。直接上国内教材入门难度+30%,国内比如谭浩强的书,写的固然很好,但是如果从零开始起步的话,并不推荐,对新手不是太友好。他的书倒挺适合有一定基础的,那样看起来比较轻松。

C++的难点和重点在于指针、几个特殊函数(如构造函数、析构函数、静态函数、友元函数)、cont对象/变量/函数、继承和派生、多态性和虚函数。其中C++最核心的是继承和派生导致的多态性问题。这部分抓住了,应付考试就差不多了,但难就难在继承和派生又绕不开前面几个家伙,类里可能会有指针,会有构造/析构函数,友元等等,如何理清继承和派生出来的类和原来的类,那几个家伙他们之间的相互作用,则是一个最大的难点。

整体而言,C++这门课需要一定的抽象能力,不算简单,学习曲线比Java要陡,想学好需要付出一定的努力。但考试相对简单,多态性考察的深度也很浅,倒是几大特殊函数的分值占比很大,尤其是构造和析构函数,各种题型都有涉及,包括最后几道大题。可以看出考察的还是基础知识是否扎实。乐观对待,积极努力,你一定可以!

有人说,你又不是专业程序员,学这个有必要么?我想说,人这一辈子,并不是做任何事都是有意义的。但是什么都不去做,人生一定毫无意义。

最后修改日期:十一月 8, 2019

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。