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

朝气

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

Item 01: View C++ as a federation of languages


C++

近期的C++已经是个多重范型编程语言:一个并且支持进度情势(procedural)、面向对象格局(object-oriented)、函数格局(functional)、泛型格局(generic)、元编程性格局(metaprogramming)的语言。

C++是一个语言联邦

那么些力量和弹性使C++成为一个强有力的工具,但也会拉动很多思疑:所有“适当格局”就像是都有两样。大家该怎么知道那样一个语言呢?

语言联邦

最简易的措施是将C++视为一个由连带语言结合的邦联而非单一语言。

C++的子语言

在其某个子语言中,各类准则与通例都倾向于简单、直观易懂、并且不难记住。不过当您从一个子语言移往另一个子语言时,守则可能改变。为了知道C++,必须要认识其主要的子语言。幸运的是唯有几个:

  • C。说到底C++仍是以C为根基。区块、语句、预处理器、内置数据类型、数组、指针等全都来自C。许多时候C++对标题的解法其实不过就是较高级的C解法,但当您以C++内的C成分工作时,高效编程守则映照出C语言的受制:没有模板,没有相当,没有重载……

  • Object-Oriented C++。那有些也就是C with
    Classes所须要的:classes、封装、继承、多态、virtual函数……等等。这一有的是面向对象设计在C++上的最直接执行。

  • Template
    C++
    。这是C++的泛型编程部分,也是大抵程序员经验最少的有的。Template相关考虑与统筹已经弥漫整个C++。由于templates威力强大,它带来崭新的编程范型,也就是所谓的template
    metaprogramming(TMP,模板元编程)。

  • STL。STL是个template程序库。它对容器、迭代器、算法以及函数对象的条条框框有极佳的紧密合营与协调。STL有温馨特有的工作格局,当您同STL一起坐班时候,你必须听从它的条条框框。

C++并不是一个分包一组守则的紧密语言:它是从三个子语言结合的邦联,每个语言都有友好的清规戒律。

NOTE:

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

Effective C++