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

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

视 C++ 为一个语言联邦


今天的 C++ 已经是个多重范型编程语言 (multiparadigm programming language),一个同时支持过程形式 (procedural)、面向对象 (object-oriented)、函数式(functional)、泛型 (generic)、元编程 (metaprogramming) 的语言。这些能力和特性使得 C++ 成为一个无可匹敌的额工具。我们该如何理解这样一个语言呢?

最简单的方法是将 C++ 视为一个由相关语言组成的联邦而非单一语言。为了理解 C++,你必须认识其主要的次语言 (sublanguage)。只有四个:

  • C。说到底 C++ 仍是以 C 为基础。blocks、statements、preprocessor、built-in data types、arrays、pointers 等统统来自 C,但当你以 C++ 内的 C 成分工作时,高效编程守则映射出 C 语言的局限:没有模板 (templates),没有异常 (exceptions),没有重载 (overloading) ……

  • Object-Oriented C++。 面向对象的 C++:类、封装、继承、多台、虚函数(动态绑定) ……等等。这一部分是面向对象设计之古典守则在 C++ 上最直接的实现。

  • Template C++。这是 C++ 的泛型编程 (generic programming) 部分。实际上由于 templates 威力强大,它们带来了崭新的编程泛型 (programming paradigm),也就是所谓的 template metaprogramming (TMP,模板元编程)。

  • STL。STL 是 template 程序库。它对于容器 (containers)、迭代器 (iterators)、算法 (algorithms)以及函数对象 (funtion objects) 的规约有极佳的紧密配合与协调。

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

请记住

  • C++ 高效编程守则视状况而变化,取决于你使用 C++ 的哪一部分。
posted @ 2016-07-01 10:17  1202zhyl  阅读(100)  评论(0编辑  收藏  举报