第一个条款是一个很好的对C++总体认识的说明,我们接触C++的时候往往只是在其中一个领域深耕,而忽略了C++是一个综合的语言体系。
C++ 包含4层语言体系,C,object-oriented,template,STL。在每一层单独的语言体系中,各种适用的规则比较明确并且有自己的特点:
- C:区块,语句,预处理器,内置数据类型,数组,指针
- object-oriented:类,封装,继承,多态
- template:泛型编程
- STL:容器,迭代器,算法以及函数对象紧密配合与协调
但如果切换了语言体系,高效的规则就会发生改变,比如:
C中进行值传递效率会更高(往往是内置的数据类型),而object-oriented和template中因为涉及到自定义的构造和析构,通常通过引用+const的方式进行传递效率会更高。而到了STL中,迭代器和函数对象都是在C指针上塑造出来的,所以值传递又再次变得更加适用。