## 历史
### 起源
在 1979 年,Bjarne Stroustrup 在贝尔实验室从事计算机科学与软件工程的研究工作。他在复杂的项目开发中感受到了 C 语言在表达能力、可维护拓展能力上的不足。于是在 1983 年,他在 C 语言的基础上添加了面向对象的特性,取名为 C with Classes,此时已经形成了 C++ 的雏形。
### 推广
1985 年,Bjarne Stroustrup 发表了论文《An Extension of C called C++》,这代表着 C++ 正式在人们眼中亮相。在随后几年,C++ 的应用次数逐渐变多,应用范围逐渐变广,许多大学也将 C++ 作为学术研究的首选语言,标准模板库(STL)也在此时逐渐完善。
### 标准化
1990 年,C++ 开始了标准化之路,美国国家标准协会(ANSI)与国际标准化组织(ISO)负责这项工作。最终,1998 年,C++ 的第一个标准 ISO/IEC 14882:1998 发布。
### 未来
在发展的二十多年间,C++ 有了许多新标准,包括 C++ 03、11、14、17、20、23 等。在人工智能领域,C++ 充当着重要的角色,信息学奥林匹克竞赛也广泛使用 C++ 语言作为首选。C++ 的路仍在走着。
## 演变
### C++ 98
第一个标准化的 C++ 版本,基于 Bjarne Stroustrup 的原始 C++ 设计,并加入了 STL、异常处理、输入输出流等重要特性。
### C++ 03
发布于 2003 年的 C++ 版本,对 C++ 98 进行了一些小修小改。
### C++ 11
C++ 的重要版本之一。它引入了类型推断、智能指针、范围 for 循环、Lambda 表达式、并发运算、空指针 nullptr、增强模板、常量表达式等等。
### C++ 14
对 C++ 11 的小幅度更新,改进了 Lambda 表达式的自动类型推导、自动返回类型推导、对于字面量的改进等。
### C++ 17
提升 C++ 的易用性,加入了 std::optional、std::variant、std::string_view 等结构。
### C++ 20
C++ 20 又是一个继 C++ 11 之后的重要版本之二。它引入了概念、范围、携程与模块四大特性,对三元运算符进行了改进,增强了常量表达式。完全支持 C++ 20 的编译器目前只有 [[MSVC]] 一家。
## 安装
C++ 有很多种实现。比较流行的是 GNU 工程里的 [[GCC]]、[[LLVM]] 项目里的 clang 和微软的 [[MSVC]]。