一开始,C++只是C加上一些面向对象的特性,C++最开始的名称C with Classes也反映了这个关系。
随着语言的成熟,C++开始接受不同于C with Classes的各种观念、特性和编程战略。Exceptions(异常)对函数的结构化带来不同的做法,templates(模板)将我们带到了新的设计思考方式,STL则定义了一个前所未有的伸展性做法。
现在的C++已经是一个多重范型的编程语言,同时支持过程形式,面向对象形式,函数形式,泛型形式,元编程形式。
要理解C++,最简单的方法是将C++视为一个由相关语言组成的联邦而非单一语言。C++的主要次语言有4个:
1. C语言:C++以C语言为基础。区块,语句,预处理器,内置数据类型,数组(arrays),指针 都来自C。C语言的局限在于:没有模板、异常和重载。
2. 面向对象的C++:包括了类、封装,继承,多态,虚函数等等。
3. 模板C++:这是C++的泛型编程部分。
4. STL :STL是一个模板程序库,对容器,迭代器,算法以及函数对象的规划有极佳的紧密配合与规划。
当我们从某个次语言切换到另外一个,可能需要改变“高效编程守则”。例如:对内置类型而言,值传递通常比引用传递高效,但当我们从C part of C++移向面向对象的C++部分时,由于用户自定义构造函数和析构函数的存在,用引用传递往往更好。
请记住:
C++高效编程守则视状况而变化,取决于你使用C++的哪一部分。