条款01:视C++为一个语言联邦

        一开始,C++只是C加上一些面向对象特征。C++最初的名称C with Classes也反应了这段血缘关系。但是现在C++已经是个多重泛型编程语言,一个同时支持过程形式、面向对象形式、函数形式、泛型形式、元编程形式的语言。

        为了理解C++,你必须认识其中主要的次语言。幸运的是总共只有四个:

C。 说到底C++仍是以C为基础。区块、语句、预处理器、内置数据类型、数组、指针等统统来自C。许多时候C++对问题的解法其实不过就是较高级的C解法。

Object-Oriented C++。这部分也就是C with Classes所诉求的:classes(包括构造函数和析构函数),封装、继承、多态、virtual函数(动态绑定)......等等,这一部分是面向对象设计之古典守则在C++上的最直接实施。

Template C++。这是C++的泛型编程部分,也是大多数程序员经验最少的部分。Template相关考虑与设计已经弥漫整个C++,良好编程守则中“惟template适用”的特殊条款并不罕见。实际上由于templates威力强大,他们带来崭新的编程规范,也就是所谓template metaprogramming(TMP 模板元编程)。

STL。STL是个template程序库,看名称也知道,但它是非常特殊的一个。它对 容器、迭代器、算法以及函数对象的规约有极佳的紧密配合与协调,然而templates及程序库也可以其它想法建置出来。STL有自己特殊的办事方式,当你伙同STL一起工作,你必须遵守它的规约。

        因此,C++并不是一个带有一组守则的一体语言;它是从四个次语言组成的联邦政府,每个次语言都有自己的规约。记住这四个次语言你就会发现C++容易了解得多。

请记住:

C++高效编程守则视状况而变化,取决于你使用C++的哪一部分。

你可能感兴趣的:(条款01:视C++为一个语言联邦)