C语言有很多优点,也有很多不足。如对类型匹配的检查不够严格、基本没有支持代码重用的机制、不支持面向对象等。这使得在用C语言开发大规模的软件时,维护和扩充都比较困难。
1967 年,Simula 语言中第一次出现了面向对象 (OO) 的概念,但由于当时软件规模还不大,技术也还不太成熟,面向对象的优势并未发挥出来。
1980 年,贝尔实验室的 Bjarne Stroustmp 开始对C语言进行改进,为其加入面向对象的特性。最初,这种新语言被称为“带类的C(C with Classes)”。
1983 年,“带类的C”加入虚函数、函数和运算符重载、引用等概念后,正式定名为“C++(C plus plus)”。
1985 年,C++ 最权威的著作、由 Bjarne Stroustmp 撰写的《C++程序设计语言》(The C+ + Programming Language)第一版发布。
1989 年,C++ 2.0 版发布,加入了多重继承、抽象类、静态成员、常量成员函数等概念。1990 年,又加入了模板、异常处理、名字空间等机制。
1994 年,ANSI C++ 标准发布。
1998 年,ANSI(美国国家标准协会)和 ISO(国际标准化组织)联合发布了至今使用最为广泛的 C++ 标准,称为 C++ 98。C++ 98 最为重大的改进就是加入了 “标准模板库”(Standard Template Library, STL),使得“泛型程序设计”成为 C++ 除“面向对象”外的另一主要特点。
2003 年,ISO 的 C++ 标准委员会又对 C++ 略做了一些修订,发布了 C++ 03 标准。C++ 03 和 C++ 98 的区别对大多数程序员来说可以不必关心。
2005 年,一份名为 Library Technical Report 1(简称 TR1)的技术报告发布,为 C++ 加入了正则表达式、哈希表等重要类模板。虽然 TR1 当时没有正式成为 C++ 标准,但如今的许多 C++ 编译器都已经支持 TR1 中的特性。
2011 年 9 月,ISO 通过了新的 C+ + 标准,这就是 C++11。C++11 在酝酿的过程中被称为 C++ 0x,因为 Bjame Stroustmp 原本预计它应该在 2008 年或 2009 年发布。 C++11 对 C++ 的语言特性和标准库都做了比较大的扩充,TR1 中的许多特性正式成为 C++11 标准的一部分。
当前比较流行的 C++ 编译器有 GCC、微软公司的 Visual Studio 2015、Dev C++ 等。Dev C++ 核心的编译器实际上还是 GCC,只不过是用 IDE(集成开发环境)将其包装起来,更加便于使用。Visual Studio 功能最为强大,但是体积巨大而且价格昂贵;Dev C++ 只有几十兆字节大小,而且免费。推荐读者使用这两种编译器。
2014年8月18日,经过C++标准委员投票,C++14标准取得一致通过。C++14标准是‘ ISO/IEC 14882:2014 Information technology -- Programming languages -- C++’ 的简称?。在标准正式通过之前,原名C++1y。C++14标准的委员会草案N3690于2013年5月15日发表。草案文档经过肯定的文字润色和修正之后,将在年内提交给ISO作为正式的C++标准发布。
C++17 是继 C++14 之后,C++ 编程语言 ISO/IEC 标准的下一次修订的非正式名称。而就在2017-12-5,ISO C++ 委员会正式发布了 C++ 17 标准,官方名称为 ISO/IEC 14882:2017。基于 C++ 11,C++ 17 旨在使 C++ 成为一个不那么臃肿复杂的编程语言,以简化该语言的日常使用,使开发者可以更简单地编写和维护代码。
C++20我们都知道快要面世了!但是具体消息我们还是要等官方发布,我们静候佳音吧!相信不会让我们失望的!