在学校中的时候,我们经常听到老师提到面向对象编程时,就会提及C++,慢慢的同学们就感觉C++就是一门面向对象的编程语言,其实这并不完全正确,更准确的说法应该是,C++是一个语言集合。
我们都知道C++是在C的基础上诞生的,C++最初的名称是C with Classes,这也证明C++和C特别相似。
但是这个新的语言(C++)慢慢的变得成熟,变得更加强大,慢慢的融入了一些不同于C with Classes的各种观念、特性和编程战略。异常(Exceptions)对函数的结构化带来了不同的做法,模板(templates)给我带来了新的设计思考方式,而STL则定义了一个前所未见的延展性做法。
如今的C++已经成为了一个无可匹敌的工具,它是一个多重泛型编程语言,支持面向过程形式、面向对象形式、函数形式、泛型形式、元编程形式的语言。
那我们要如何更好的理解C++呢?最简单的方法就是把它看做一个语言的集合,这个集合做有多重二级语言组成,在每一个二级语言中,遵守的各种规则都要简单,直观易懂并且容易记住。但是在不同的二级语言中,某一些规则可能会发生改变。为了更好的理解C++我们需要认识其主要的二级语言。(参照 Effective C++)
- C:说白了C++仍然是以C为基础的。
- Object-Oriented:换句话说这部分就是C with Classes,其中包括类(classes)、封装(encapsulation)、继承(inheritance)、多态(polymorphism)、动态绑定(virtual function),这些都是最基础的面向对象设计在C++上的体现。
- Template C++:泛型编程,这也是很多程序员使用最少的一部分,Template相关考虑和设计对于整个C++的影响都特别的大。template十分强大,以至于他给了我们崭新的编程形式。
- STL:标准模板库,这个非常特殊也是非常强大的一个部分,它对容器、迭代器、算法以及函数对象都有紧密的配合和协调,STL有特殊的处理方式,若你要使用它就必须准守它的规则。
C++并不是一个简单的语言,它是一个由以上四种二级语言组成的高级语言。如果你熟练使用这些二级语言,C++也会使用的得心应手。