语言介绍¶
C++的诞生源于20世纪70年代末至80年代初的编程范式变革浪潮。它旨在结合C语言的高效性与面向对象编程(OOP)的抽象能力,以应对日益复杂的系统级编程挑战。
历史起源¶
比雅尼·斯特劳斯特鲁普¶
C++创始人 比雅尼·斯特劳斯特鲁普(Bjarne Stroustrup) 在剑桥大学攻读博士期间,主攻分布式系统与仿真模拟研究,这段经历让他深刻认识到编程工具的核心痛点。
在此期间斯特劳斯特鲁普接触到了世界上首个面向对象编程语言 Simula67(由 Ole-Johan Dahl 和 Kristen Nygaard 于 1967 年在挪威计算中心开发),它通过类和对象的概念实现了贴近现实的建模方式,极大提升了代码模块化与可重用性。但Simula67存在运行效率低、语法复杂的缺陷,无法满足系统级编程的性能要求。与此同时,他在分析UNIX内核时发现,主流语言C虽然高效灵活,却缺乏面向对象的抽象机制,难以应对大型系统的复杂性管理。
1979年,斯特劳斯特鲁普加入 AT&T 贝尔实验室后,开始着手解决这一矛盾。他希望创造一种兼具 C 语言高效性与面向对象表达能力的新语言。经过反复实验,他在 C 语言基础上引入面向对象特性,初步开发出 “带类的 C”(C with Classes),并基于贝尔实验室的 C 编译器改造了其前端。这个早期版本的核心创新包括:引入类实现数据封装、通过继承机制实现代码复用、借助虚函数实现多态性,让语言既能支持传统过程式编程,又能进行面向对象开发。
1983年,随着语言特性的完善,斯特劳斯特鲁普将其正式命名为"C++"。"++"既代表 C 语言的自增操作,也象征着对原有语言能力的扩展与提升。这一命名由他的同事Rick Mascitti 提出。同年,他开发出首个C++编译器 Cfront,它是一个源代码到源代码的转换器(Source-to-Source Translator),通过将 C++ 代码转换为 C 代码,再利用现有的C编译器进行编译,解决了早期语言的编译落地问题。
发展历程¶
C++的发展始终围绕“零开销抽象”(Zero-overhead Abstraction)的核心理念,通过国际标准化进程不断完善,形成了清晰的版本迭代脉络。标准化工作由 ISO/IEC JTC1/SC22/WG21(C++标准委员会)负责。
1985年:这一年是C++发展的关键节点:Cfront 编译器 1.0 随斯特劳斯特鲁普撰写的 《C++程序设计语言》(The C++ Programming Language) 一同发布,这标志着 C++ 正式进入工业界应用阶段,并为语言推广提供了权威指南。
1989年:发布 Release 2.0 版本,引入多重继承、纯虚函数与抽象类等新特性,并进一步完善虚函数机制。同时,《The Annotated C++ Reference Manual》出版,为后续标准化奠定了基础。
1998 年:国际标准化组织(ISO)发布首个正式标准 ISO/IEC 14882:1998(C++98),定义了核心语言与标准库框架,包含标准模板库(STL,由 Alexander Stepanov 与 Meng Lee 设计)以及修订后的 C 标准库,使 C++ 具备了稳定的跨平台能力。
2003年:推出C++03标准,以修复C++98的缺陷为主,提升不同编译器间的兼容性,仅新增"值初始化"这一语言特性。
2005年:发布技术报告TR1,虽非官方标准,但引入智能指针、哈希表、正则表达式等扩展特性,成为后续版本的重要基础。
2011年:C++11标准发布(又称C++0x),是语言发展的里程碑式升级。引入自动类型推导(auto)、右值引用与移动语义、Lambda表达式、智能指针(shared_ptr/unique_ptr)、基于范围的for循环,以及原生并发编程支持(std::thread、std::mutex 等),大幅提升语言的现代化程度与易用性。
2014年:C++14作为小型扩展版本,优化C++11的细节体验,包括泛型Lambda、函数返回类型推导、放宽constexpr函数限制等。
2017年:C++17标志着现代C++走向成熟,新增结构化绑定、if初始化语句、类模板参数推导(CTAD)、内联变量、文件系统库(
2020年:C++20引入革命性特性,包括替代头文件的模块(Modules)、模板约束机制(Concepts)、异步编程工具(协程)、范围库(Ranges)以及三向比较运算符(<=>)等,重塑语言的模块化与抽象能力。
2023 年:C++23 在 C++20 的基础上继续优化,推出标准库模块(import std;)、明确对象参数(deducing this)、新容器 flat_map / flat_set、错误处理工具 std::expected,以及格式化输出函数 std::print 等特性,进一步提升了编译效率与开发便捷性。
应用领域¶
C++ 理论上可以在任何平台或操作系统中运行这大大的增加了 C++ 所能应用到的领域。
操作系统
目前 Windows 操作系统的部分内核和驱动程序都是有 C++ 开发的
MacOS 和 IOS 的部分内核组件
软件开发
在目前来看市面上大多数的桌面端软件包括客户端和服务端都是有 C++ 来完成的
许多游戏框架和内核也皆是有 C++ 来实现的
嵌入式开发
医疗设备
车机系统
航空设备
高性能计算
金融
AI (例如:TensorFlow)
timeline
title C++ 发展历程
1985 : 第一个商业版本 Cfront 1.0 发布
: 《C++程序设计语言》第一版问世
1989 : Release 2.0 发布
: 引入多重继承、抽象类
1998 : C++98 - 首个 ISO 国际标准
: 正式引入标准模板库 (STL)
2003 : C++03 - 缺陷修复与兼容性提升
2005 : TR1 技术报告发布
: 引入智能指针、哈希表等准标准特性
2011 : C++11 - "现代C++"元年的里程碑
: 引入 auto, Lambda, 右值引用, 并发支持
2014 : C++14 - 对 C++11 的优化与完善
: 引入泛型 Lambda, 返回类型推导
2017 : C++17 - 现代 C++ 走向成熟
: 引入结构化绑定, 文件系统库, 并行算法
2020 : C++20 - 革命性特性引入
: 引入模块 (Modules), 概念 (Concepts), 协程 (Coroutines)
2023 : C++23 - 持续优化与改进
: 引入标准库模块 (import std;), std::expected, std::print