C++语言发展历程-2025

C++语言发展历程-2025

前言

C++是一种高级编程语言,由Bjarne Stroustrup于1979年在贝尔实验室创建,是C语言的扩展和改进版。

C++从最初的C with class,经历了C++98、C++03、C++11、C++ 14、C++17、C++20、C++23多次标准化改造,成为一门多范式、高性能的系统级编程语言,广泛应用于系统软件、游戏开发、高性能计算、嵌入式系统等领域。

1. C++ 核心特性

1.1 多范式编程

  • 面向对象编程(OOP):通过封装、继承和多态实现代码复用和抽象
  • 泛型编程:通过模板(template)实现类型无关的编程
  • 面向过程编程:兼容C语言编程
  • 函数式编程:通过Lambda表达式和高阶函数std::function支持函数式特性

1.2 高性能

  • 直接访问硬件资源,支持指针操作和内存管理。
  • 零成本抽象: 在设计和实现抽象级别较高的C++代码(如模板、inline函数、常量表达式、运算符重载、类型擦除等)时,不会引入额外的运行时开销。

1.3 标准库STL

  • 容器:vector、list、map、set
  • 算法:sort、find、transform
  • 迭代器:遍历容器
  • 输入输出:iostream
  • 智能指针:unique_prt、shared_ptr自动管理内存

1.4 现代C++特性

  • 移动语义(C++11):通过右值引用减少对象拷贝,提升性能
  • Lambda表达式(C++11):函数式编程
  • 协程(C++20)):异步编程
  • 概念(Concepts, C++20):为模板参数添加约束,提高编译错误信息的可读性
  • 模块(Modules, C++20):替代 #include,加速编译过程

2. C++标准及关键特性

时间 C++ 标准名称 通称 关键特性 备注
1998 ISO/IEC 14882:1998 C++98 STL、try/catch异常处理、命名空间、模板元编程 首个C++标准
2003 ISO/IEC 14882:2003 C++03 修复STL故障、成员模板、增强POD类型支持 C++98补丁
2011 ISO/IEC 14882:2011 C++11 自动类型推导、移动语义、lambda表达式、智能指针、并发编程、右值引用 现代C++里程碑
2014 ISO/IEC 14882:2014 C++14 泛型lambda、constexpr扩展、二进制字面量、统一智能指针创建 C++11补充
2017 ISO/IEC 14882:2017 C++17 模块化(实验)、结构化绑定、折叠表达式、文件系统操作、并行算法 模块化和库增强
2020 ISO/IEC 14882:2020 C++20 模块(正式)、协程、范围、概念、三路比较运算符 模块化和并发
2024 ISO/IEC 14882:2024 C++23 模块导入优化、反射、协程生成器 模块化和反射

3. C++标准编译器支持情况

标准版本 GCC最低版本 Clang最低版本 MSVC最低版本 生产环境推荐
C++98 全部 全部 全部
★ C++11 4.8+ 3.3+ VS2013+ Ubuntu 20.04 (GCC 9.3) 默认支持 VS2015完全支持
C++14 5.1+ 3.5+ VS2017+
★ C++17 7.1+ 5.0+ VS2019+ Ubuntu 22.04 (GCC 11.2) 完整支持
C++20 10.0+ 10.0+ VS2022+ Ubuntu 22.04(GCC 11.2) 默认支持
C++23 13.0+ 15.0+ -

Reference:

  1. https://zh.wikipedia.org/wiki/C%2B%2B
  2. https://github.com/myfreeer/cppreference2mshelp
相关推荐
专注VB编程开发20年几秒前
.net按地址动态调用VC++DLL将非托管DLL中的函数地址转换为.NET可调用的委托
开发语言·c++·c#·.net
u***u68515 分钟前
PHP最佳实践
开发语言·php
是店小二呀21 分钟前
使用Rust构建一个完整的DeepSeekWeb聊天应用
开发语言·后端·rust
Bin二叉1 小时前
南京大学cpp复习——面向对象第一部分(构造函数,拷贝构造函数,析构函数,移动构造函数,友元)
c++·笔记·学习
大锦终1 小时前
【Linux】高级IO
linux·服务器·网络·c++
灵晔君1 小时前
C++标准模板库(STL)——list的使用
c++·list
努力学习的小廉1 小时前
我爱学算法之—— 字符串
c++·算法
算法如诗1 小时前
**MATLAB R2025a** 环境下,基于 **双向时间卷积网络(BITCN)+ 双向长短期记忆网络(BiLSTM)** 的多特征分类预测完整实现
开发语言·网络·matlab
k09331 小时前
在组件外(.js文件)中使用pinia的方法2--在http.js中使用pinia
开发语言·javascript·http
二川bro2 小时前
第44节:物理引擎进阶:Bullet.js集成与高级物理模拟
开发语言·javascript·ecmascript