如何理解C++

如何理解C++?

面对这个问题,一千个人有一千个哈姆雷特。我也不知道如何理解C++,毕竟我C++编程经验实在是少。

在阅读effective C++这本书时,条款01:视C++为一个语言联邦里面貌似给出了解释,但是不知道能不能作为这个问题的答案。

说起C++,大多数人都会和C联系起来。诚然,C++是C的超集,C是C++的子集。但是C++和C又是不同的,说他们是两种不同的语言也不过分。这里我们就不探究二者的区别和联系。

以下摘自effective C++条款01:

C++是一个语言联邦,这个语言联邦是由4个次语言组成的。

1 C。说到底C++仍是以C为基础的。区块(block),语句(statements),预处理器(preprocessor),内置数据类型(built-in data type),数组(arrays),指针(pointer)等等统统来自C.许多时候C++对问题的解法其实不过就是较高级的C解法。但是当你以C++内的C成分工作时,高效编程守则映照出C语言的局限:没有模板(templates),没有异常(exceptions),没有重载(overloading)。

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

3 templates C++。这是C++的泛型编程(generic programming)部分,也是大多数程序员经验最少的部分。

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

你可能感兴趣的:(C/C++)