1.1.5 标准C++(www.cppentry.com)
C++(www.cppentry.com)语言是在20世纪80年代早期由Bjarne Stroustrup在AT&T的贝尔实验室设计的。现在,它在很大程度上已经取代C语言成为主流的编程(www.cppentry.com)语言。大多数C语言编译器实际上是C/C++(www.cppentry.com)编译器,程序员可以根据需要选择这两种语言之一。C++(www.cppentry.com)语言本身也被标准化,即ISO/IEC 14882:1998,或“标准C++(www.cppentry.com)”。C++(www.cppentry.com)语言在C语言的基础上进行了很多扩展,满足了程序员开发大型程序的需要,包括增强的类型检查以及对面向对象编程(www.cppentry.com)的支持。但是,C++(www.cppentry.com)也是世界上最为复杂的编程(www.cppentry.com)语言之一,存在许多意想不到的陷阱。
标准C++(www.cppentry.com)近乎是(但不完全是)标准C的超集。由于C语言和C++(www.cppentry.com)语言标准是根据不同的方案开发的,因此它们之间可能存在一些不协调之处。而且,C语言有意与C++(www.cppentry.com)语言保持距离。例如,C语言并没有试图增加C++(www.cppentry.com)语言中“类”这个特性的简化版本。
用标准C和标准C++(www.cppentry.com)的公共子集编写C代码也是可行的,有些人把这种代码称为Clean C。用这种代码编写的程序既可以编译为C程序,也可以编译为C++(www.cppentry.com)程序。由于C++(www.cppentry.com)一般具有比标准C更严格的规则,因此Clean C可以看成是一个更好、更具移植性的子集。如果使用Clean C编写程序,必须考虑下面这些情况:
Clean C程序必须使用函数原型。C++(www.cppentry.com)不再允许旧式风格的声明。
Clean C程序必须避免使用C++(www.cppentry.com)关键字作为标识符,例如class和virtual。
另外还存在一些规则和区别,但它们通常不会造成问题。在本书中,我们解释如何编写能够被C++(www.cppentry.com)编译器所接受的标准C语言代码。我们并不讨论标准C中并不存在的那些C++(www.cppentry.com)特性(正是这些特性奠定了C和C++(www.cppentry.com)的区别)。