C++的定义已经作了许多修订,以保证任何同时在C和C++里合法的结构在两个语言中都具有同样的意义(除了少量例外)。
C语言本身也在发展和演化,部分地是在C++开发地影响之下。ANSI C标准就包含了从“带类的C”借去的函数声明语法。借鉴是双向的,例如void*指针类型是为ANSI C发明的,但是却在C++里第一次实现。正如本书第一版所允诺的,C++的定义已经过修订,以去掉无缘无故的不兼容性。今天的C++比原来更加与C兼容了。这里的想法是让C++尽可能接近ANSI C——但又不过于接近。百分之百的兼容性从来就不是目标,因为这将危害类型安全性以及用户类型和内部类型的平滑集成。
了解C并不是学习C++的先决条件。在C中编程序被鼓励使用的许多技术和诀窍由于C++语言的特征而变的多余了。例如,显性类型转换(casting)在C++里就没有在C里那么频繁。然而,好的C程序倾向于也是C++程序。例如,在Kernighan和Ritchie的《The C Programming Language》, 2nd Edition 里的每个程序都是C++程序。任何有关静态类型语言的经验对于学习C++也都能有所帮助。
--------------------next---------------------