C++最先只是C加上一些面向对象特性,也就是 C with Classes。
C++现在是一个多重泛型编程语言(multiparadigm programming language),同时支持过程形式(procedural)、面向对象形式(object-oriented)、函数形式(functional)、*泛型形式(*generic)、元编程形式(metaprogramming)的语言。
C++可以(理解成)以下四种语言的结合:
-
C:但它比C语言多了模版(templates),多了异常(exceptions),多了重载(overloading)……
-
Object-Oriented C++:这部分也是C++在改进C之后所诉求的:classes(包括构造函数和析构函数)、封装(encapsulation)、继承(inheritance)、多态(polymorphism)、virtual函数(动态绑定)……
-
Template C++:这个是C++的泛型编程的(generic programming)部分。实际上由于templates威力强大,它们带来崭新的编程范型(programming paradigm),也就是所谓的 template metaprogramming(TMP, 模板元编程)。
-
STL:STL是个template 程序库,但它是非常特殊的一个。它对容器(containers)、迭代器(iterators)、算法(algorithm)以及函数对象(function objects)的规约有极佳的紧密配合与协调。
因此C++是以上四个次语言组成的“组合语言”。