一开始,C++只是加上一些面向对象特性的C,但是随着语言的成熟,它变得更加灵活多变,如Template、STL、异常。
今天C++已经是一个多重范型编程语言,同时支持过程形式、面向对象形式、函数形式、泛型形式、元编程形式。这些能力和弹性使C++变得强大。但我们该如何理解呢?
最简单的方法是将C++视为一个由相关语言组成的联邦而非单一语言。在某一个次语言中,守则变得简单。在C++中,主要的次语言有4个:

  • C
    说到底C++是以C为基础的,数组、内置数据类型、指针都是来自于C的。
  • Object-Oriented C++
    这一部分也就是C with Classes所诉求的,classes、封装、继承、多态······体现了面向对象的特性。
  • Template C++
    这是C++的泛型编程部分。良好的编程守则中“唯template适用”的条款并不罕见,实际上template威力强大,他们带来崭新的编程范型,也就是所谓的templatemetaprogramming(TMP,模板元编程)。
  • STL
    它对容器、迭代器、算法以及函数对象的规约有极佳的紧密配合与协调。

C++并不是一个带有一组守则的一体语言:它是由四个次语言组成的联邦政府。C++高效编程守则视状况而变化,取决于你使用那一部分。
由于有这4种不同的风格,所以当你对内置数据类型操作时,通过值传递比通过引用传递更高效;但当你使用的是自定义的对象时,由于构造函数和析构函数的存在,传递const引用更好。但当你使用STL库时,由于STL是通过指针实现的,所以传递值一般更好。

本文固定链接: http://www.js-code.com/c/c_61790.html