源与流:C++ 的历史与版本
在学习了第一课后,我们需要先为语言本身建立一个清晰的时间坐标。也就是C++语言是如何一步步演化成今天的样子?不同版本(98/11/14)之间到底有哪些关键差异?为什么讲解以C++98为主?
语言的血缘:B语言 → C语言 → C with class
C++最初的名字——“C with class”,直接揭示了它的起源:以C语言为基础,加上class(类)这一面向对象机制。
很多人误以为C++是C的超集(即每个合法的C程序都是合法的C++程序)。实际上,虽然C++继承了大量C的特性,但两者在严格程度上有差异:C++对类型检查更严格。C++的隐式类型转换更少。C++的目标是“更好用的C”,而不是“完全兼容C”。
里程碑:C++98 —— 第一个国际标准
从1983年出现到1998年,C++经历了15年“方言横行”的时期。不同编译器厂商(Borland, Microsoft, GNU等)都有自己的变体,导致代码移植困难。1998年,ISO/IEC 14882:1998标准发布,这是C++的第一个国际标准,通常简称为C++98。
因为C++98奠定了最核心的语法和设计思想,现代C++(11之后)的所有新特性都是在此之上的“锦上添花”。先学好98的“规矩”,才能理解11的“便利”。
补充背景:1990年代,C++已经成为工业界的主流(用于大型系统如微软Windows、Adobe Photoshop等),但编译器差异导致“不兼容的痛苦”。标准化的动机就是统一语言规范,保证代码的可移植性。标准委员会经过多年博弈,最终在1998年达成一致。然而,由于标准本身过于复杂,导致编译器完全实现它又花了几年时间(直到2003年左右才基本稳定)。所以实际业界“全面采用C++98”要滞后到2000年代中期。
革命:C++11 —— 现代C++的诞生
经过13年的沉寂,2011年发布了C++11标准(之前曾被称作C++0x)。这是C++历史上最大的一次革新,几乎重写了语言的使用方式,被称为“现代C++”。
完善:C++14 —— 小步改进
2014年发布了C++14,是对C++11的“小修小补”,没有引入革命性的特性,主要目的是改进和优化。




