条款01:视 C++ 为一个语言联邦
作为整个书的开篇,几乎点明了整本书的基调,C++的繁复是有目共睹的,其麻烦的就在于多种特性的混杂,不断地迭代,打补丁,而想要成为优秀的C++开发者,全部了解,属实是在难为人,但总是要做到两个点:
a、对语言的常用部分要了解到,会运用(避坑);
b、交叉的部分要知道那些在什么情况下是最优解;
这两点也是本书的主要在探讨的。
1、语言的常用部分
对于C++整体,在本书中提出了四个部分的划分:C语言、Object-Oriented C++、Template C++和STL。
改版C语言部分,是C++的地基,但与C语言不是完全相同,在此部分中,几乎都是常用的,其中包括区块(blocks)、语句(statements)、预处理(preprocessor)、内置数据类型(built-in data type)、数组(array)和指针(pointers)等,因其地基的性质,想要房不塌,就要好好的掌握,熟练的使用,尤其是指针(大坑)的使用好坏,几乎是开发者功力的体现之一。
Object-Oriented C++部分,是针对面向对象设计的拓展,满足了C with Classes所诉求的classes(包括构造和析构函数)、封装(encapsulation)、继承(inheritance)、多态(polymorphism)、virtual函数(动态绑定)等面向对象设计,方便架构抽象,也是要熟练使用的。
Template C++部分,是针对泛型编程的扩展,鉴于我所在的公司极少量使用,尽量回避的情况,我对其了解并不深,身边的朋友也鲜有使用,因此,我还是认为,这个部分是加分项。
STL部分,它是非常特殊的一个,属于是高效工具的拓展,以便于C++使用者脱离反复造轮子的困境,更何况造轮子也得考虑轮子好不好用,STL是个template程序库,对其的态度分公司而异,但招聘上还是挺有市场的,因此也是要熟练使用的。
2、交叉与最优解
对于C++划分的四个,并非是完全独立的,他们内容是存在交叉的,即可以解决同样的问题;
类似想在内存开辟存在前后关联的空间,用来存储十个数据,而且还需要这是个数据我能遍历,要怎么做?
C语言的数组和STL的容器都可以做到,这时候就要根据具体情况,二选一了,找到最优解。
最后,摘录一句话:
C++高效编程守则视状况而变化,取决于你使用C++的哪一部分