今天的C++已经是一个多重泛型编程语言,一个同时支持过程式、面向对象式、函数式、泛型、元编程的语言。这些能力和弹性使C++成为一个无可匹敌的工具,但也可能引发某些迷惑;所有“适当用法”似乎都有例外。
将C++视为一个由相关语言组成的联邦而非单一语言。在其某个次语言中,各种规则都简单易懂。为了理解C++,你必须认识其主要的次语言。总共有四个:
- C:C++仍是以C为基础。许多时候C++对问题的解法其实不过就是较高级的C解法,但当你以C++内的C成分工作时,高效编程守则映照出C语言的局限:没有模板、异常、重载……
- Object-Oriented C++。这部分也就是C with class所诉求的:封装、继承、多态、虚函数……这一部分是面向对象设计的古典守则在C++上的最直接实施。
- Template C++。这是C++泛型编程部分。Template相关考虑和设计已经弥漫整个C++,良好编程守则中“唯template适用”的特殊条款并不罕见。由于template威力强大,它带来崭新的泛型编程,也就是所谓的template meta programming(TMP,模板元编程)。
- STL。它对容器、算法、迭代器以及函数对象的规约有极佳的紧密配合与协调,然而template及程序库也可以其他建置出来。
C++并不是一个带有一组守则的一体语言;它是从四个次语言组成的联邦,每个次语言都有自己的规约。记住这四个次语言你就会发现C++容易了解得多。
请记住
- C++高效编程守则视情况而变化,取决于你使用C++的哪一部分。