个人主页:Lei宝啊
愿所有美好如期而遇
前言
博主只是将书中内容用自己的理解写了出来,术语没有那么多,而且其中很多部分理解不是很透彻,对于C++初学者来说,本专栏博客还是很有意义的,因为初学者看这本书通常不是很好理解。
视C++为一个语言联邦
C++有四个次语言,分别是C,Object-Oriented C++,Template C++,STL。如果我们单独看其中一个次语言,他的各种守则和通例都是比较简单的,但是我们从一个次语言移到另一个次语言时,守则可能会改变,我们要想更好的理解C++,最好就是将C++视为一个相关语言组成的联邦,而不是单纯就是C++。
C语言
这里博主建议在学习C++前,最好是先学习C语言,因为C++还是以C语言为基础,很多东西都是来自于C语言,剩下的是在C的基础上新增的(C++最初的名字是C with Classes),但是我们用C语言的时候,还是有些局限性,比如说什么都要我们自己写,没有方法,没有模板,没有异常,没有重载等等。
Object-Oriented C++
这部分包含的就是C++所诉求的面对对象,classes(包括构造函数,析构函数),封装,继承,多态,虚函数等等。
Template C++
这就是C++的泛型编程部分,也就是模板,书中对此描述部分博主并不是很理解,这里不多赘述。
STL
这是C++的一个模板程序库,他对于容器,迭代器,算法以及函数对象的规定有很好的配合与协调,同时有了这个库,我们再编写代码时就不需要我们像C语言一样不管什么都要自己手搓,这也是我们使用C++非常爽的一点。
我们需要做的是记住这四个次语言,当我们从某个次元切换到另一个次元时,导致高效编程守则要求我们改变策略时,不要为此感到惊讶,比如所我们对内置类型,像int,double,指针等等类型而言,值传递通常比引用传值的效率要高。
当我们从C语言部分移到C++的面向对象部分,由于我们用户自定义的构造函数和析构函数,const引用传值往往更好,在使用模板时也同样如此,因为我们甚至不会知道所处理的对象的类型。
当我们了解STL程序库时,我们就会知道,其实迭代器和函数对象都是在C语言指针上塑造出来的,只是因为各种封装我们看得不是很清楚罢了。
所以,C++其实是从四个次语言组成的联邦,每个次语言都有自己的规约,我们记住这四个次语言就会发现C++其实容易了解的多。
如果觉得博主解释的不是很清晰,可以去看原著。