跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++

C++ 各标准版本核心特性差异对比

详细梳理了 C++ 从 98 至 23 各个主要版本的演进历程,对比了各版本在语言特性和标准库方面的关键新增与增强功能。内容涵盖命名空间、Lambda 表达式、移动语义、Concepts 及 Modules 等核心特性,并提供了通过预定义宏检查编译器支持标准的具体方法。

SparkGeek发布于 2026/3/30更新于 2026/9/992 浏览

C++ 各标准版本核心特性差异对比

概述

C++ 自 1998 年首次标准化以来,经历了多次重大更新。每个新标准都引入了语言特性和标准库的增强,显著提升了开发效率、性能和安全性。

核心特性对比

以下是 C++ 各主要版本(C++98/03 → C++23)的核心特性对比,按版本清晰梳理:

版本发布年份关键语言特性标准库新增/增强
C++98 / C++031998 / 2003- 命名空间 (namespace)
  • 异常处理 (try/catch)
  • 模板 (Templates)
  • bool 类型
  • RTTI (dynamic_cast, typeid) | - STL(vector, map, algorithm 等)
  • I/O 流 (iostream) | | C++11(现代 C++ 起点) | 2011 | - auto / decltype
  • Lambda 表达式 {}
  • 右值引用 & 移动语义 (&&, std::move)
  • nullptr
  • 范围 for 循环 for (auto x : v)
  • constexpr(编译期常量)
  • 可变参数模板
  • 统一初始化 {}
  • static_assert | - 智能指针:unique_ptr, shared_ptr
  • 线程支持:thread, mutex
  • unordered_map/set
  • chrono 时间库
  • array, tuple | | C++14(C++11 的完善) | 2014 | - 泛型 Lambda([](auto x){})
  • 函数返回类型自动推导(auto f() { return 42; })
  • decltype(auto)
  • 二进制字面量 0b1010
  • 数字分隔符 1'000'000
  • 放宽 constexpr(允许循环、分支) | - make_unique
  • 更灵活的 integral_constant | | C++17(实用主义飞跃) | 2017 | - 结构化绑定 auto [x, y] = pair;
  • if/switch 初始化语句
  • if constexpr(编译期条件)
  • 折叠表达式 (args + ...)
  • 内联变量 inline constexpr int x = 5;
  • [[nodiscard]], [[maybe_unused]] 属性 | - optional, variant, any
  • string_view(非拥有字符串视图)
  • filesystem(文件操作)
  • 并行算法(execution::par) | | C++20(现代化大升级) | 2020 | - Concepts(模板约束)
  • Modules(替代头文件)
  • 协程(co_await, co_yield)
  • 三向比较 <=>('太空船运算符')
  • 范围 for 支持初始化
  • Lambda 模板参数 [](T x){}
  • constexpr 几乎支持全部语法 | - Ranges 库(views::filter, views::transform)
  • span(连续内存视图)
  • 日历与时区(扩展)
  • 同步原语:latch, barrier, semaphore
  • format(类似 Python f-string,但正式加入在 C++20 提案,C++23 定稿) | | C++23(最新标准) | 2024 | - if consteval(检测是否在常量求值上下文)
  • 多维下标 obj[i, j]
  • Lambda 改进(捕获参数包、推导 this)
  • 扩展 constexpr(更多 STL 算法支持) | - std::print / std::println(直接输出,无需 iostream)
  • std::expected |
  • 重点说明

    • C++11 是分水岭:引入了现代 C++ 编程范式(自动类型、Lambda、移动语义、智能指针等),后续版本基本是其演进。
    • C++14 较小:主要是对 C++11 的'甜味剂'(syntactic sugar)和小幅增强。
    • C++17 更注重实用性:如 optional 避免空指针、filesystem 解决跨平台文件操作痛点。
    • C++20 是革命性版本:Concepts 让模板更安全,Ranges 简化算法组合,Modules 提升编译速度。
    • C++23 聚焦易用性与工程化:std::print 简化输出,expected 提供无异常错误处理方案。

    查看当前编译器支持标准

    如何查看当前编译器支持的 C++ 标准?

    #include <iostream>
    int main() {
        std::cout << "__cplusplus = " << __cplusplus << std::endl;
        return 0;
    }
    

    对应关系:

    • 199711L → C++98
    • 201103L → C++11
    • 201402L → C++14
    • 201703L → C++17
    • 202002L → C++20
    • 202302L → C++23

    目录

    1. C++ 各标准版本核心特性差异对比
    2. 概述
    3. 核心特性对比
    4. 重点说明
    5. 查看当前编译器支持标准

    更多推荐文章

    查看全部
    • MATLAB A*路径规划算法仿真与改进实现
    • Python 爬虫实战:DrissionPage 的 SessionPage 与 WebPage 模块详解
    • 多旋翼物流无人机节能轨迹规划与 Python 实现
    • 如何让英文大语言模型支持中文:继续预训练指南
    • AHP-LLM 在 AI 辅助开发中的实践:从算法选择到工程落地
    • ComfyUI Web Viewer:实现图像生成的实时预览与协作
    • 向日葵连接 Ubuntu 22.04 黑屏解决方案
    • 前端网页开发学习路径:HTML+CSS+JS
    • Android WebView shouldInterceptRequest 异步加载
    • Dev C++ 安装与配置完整指南
    • AIGC 在艺术创作中的机遇
    • 大模型算法岗位常见面试题解析
    • Python 基础:输入输出与格式化技巧
    • 基于官方 API 搭建 QQ 群聊机器人实战指南
    • Java Set 集合并非完全无序:LinkedHashSet 与 TreeSet 详解
    • Go 与 Python 技术选型及职业发展方向对比
    • 前端安全实战:密码、XSS 与 CSRF 防护
    • 前端四年裸辞求职经历与面试复盘
    • OpenCV Sobel 算子边缘检测原理与实现
    • 大模型指令微调中的 Prompt 设计与数据集构建指南

    相关免费在线工具

    • Base64 字符串编码/解码

      将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

    • Base64 文件转换器

      将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

    • Markdown转HTML

      将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

    • HTML转Markdown

      将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

    • JSON 压缩

      通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

    • JSON美化和格式化

      将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online