今天的C++已经是个多重范型编程语言(multiparadigm programming language),一个同时支持过程形式(procedural)、面向对象形式(object-oriented)、函数形式(functional)、泛型形式(generic)、元编程形式(metaprogramming)的语言。
最简单的方法是将C++视为一个由相关语言所组成的一个联邦而非单一语言。
为了理解C++语言,你必须认识其主要的次语言。共由四个:
- C。C++以C为基础
- Object-Oriented C++。这部分也是C with Classes 所诉求的:classes(包括构造函数和析构函数),封装(encapsulation)、继承(inheritance)、多态(polymorphism)、虚函数(动态绑定)等等。
- Template C++。这是C++的泛型编程部分,也是大多数程序员经验最少的部分。
- STL。STL是个模板程序库,对容器、迭代器、算法以及函数对象(function object)的规约由极佳的紧密配合与协调。
对于内置(C-like)类型而言 ,pass-by-value 往往比pass-by-refence 更高效。
涉及到C++的类 ,面向对象的时候,是pass-by-refence 更好,TemplateC++也是如此。
一旦跨入STL,就会了解迭代器和函数对象都是在C指针之上塑造出来的,所以针对STL的迭代器和函数对象而言,旧式的C pass-by-value又再次适用。
记住:C++是四个次语言所组成的一个联合体,每个语言都有自己的规约,记住这四个次语言,你会发现C++语言容易理解的多。