历史背景
C语言作为结构化和模块化的语言,在处理较小规模的程序时,比较得心应手,但是当问题比较复杂,需要高度的抽象和建模时,C语言显得力不从心。
应运而生
为解决软件危机,20世纪80年代,计算机界提出了OOP(object oriented programming)思想,这需要设计出支持面向对象的程序设计语言, Smalltalk就是当时问世的一种面向对象的语言。而在实践中,人们发现C是如此深入人心,使用如此广泛,以至于最好的办法,不是发明一种新的语言去取代他,而是在原有的基础上发展他。而在这种情况下C++应运而生,最初这门语言并不叫C++而是C with class。
C++发展
在C with class 阶段,研制者在C语言的基础上加进去的特征主要有:类及派生类、共有和私有成员的分布、类的构造函数和析构函数、友元、内联函数、赋值运算符的重载等。
1985年公布的C++语言1.0版的内容中又添加了一些重要特征:虚函数的概念、函数和运算符的重载、引用、常量(constant)等。
1989年推出的2.0版形成了更加完善的支持面向对象程序设计的C++语言,新增加的内容包括:类的保护成员、多重继承、对象的初始化及赋值的递归机制、抽象类、静态成员函数、const成员函数等。
1993年的C++3.0版本是C++语言的进一步完善,其中最重要的新特征是模板(template),此外解决了多重继承的二义性问题和相应的构造函数与析构函数的处理等。
1998年C++标准(ISO/IEC14882 Standard for the C++ Programming Language)得到了国际标准化组织(ISO)和美国标准化协会(ANSI)的批准,标准C++语言及其标准库更体现了C++语言设计的初衷。命名空间的概念、标准模板库(STL)中增加的标准容器类、通用算法类和字符串类型使得C++语言更为实用。此后C++是具有国际标准的编程语言,该标准通常简称ANSI C++或ISO C++ 98标准,以后每5年视实际需要更新一次标准。
后来又在2003年通过了C++标准第二版(ISO/IEC 14482:2003):这个版本是一次技术性修订,对第一版进行了整理—修订错误、减少多义性等,但没有改变语言特性。这个版本常被称为C++03.
应用领域
如果项目中,既要求效率又要建模和高度抽象,那就选择C++吧。
系统层软件开发
系统使用C开发。C++的语言本身的高效性和面向对象,使其成为系统层开发的不二之选。比如window桌面,GNOME桌面系统,KDE桌面系统(Linux桌面)。
服务器程序开发
面向对象,具有较强的抽象和建模能力。使其在电信,金融,电商,通信,媒体,交换路由器等方面中不可或缺。
游戏、网络,分布式、云计算
以其效率与建模,上述领域无可取代。
基础类库/科学计算
比如大名鼎鼎的MFC/ACE/QT/GTK等类库。
内容
C++先是兼容C,然后在此基础上,
添加对C的基本语法的扩展,面向对象(继承,封装,多态),STL等。