C++ 是一门兼顾高性能与抽象能力的编程语言。自 1998 年第一个国际标准发布以来,C++ 每隔几年就会更新一次标准,每次更新都带来新的语法特性和标准库功能。
本文将从 C++98 一直讲到 C++23,逐一介绍各版本的主要语言和库特性。
C++ 是一门兼顾高性能与抽象能力的编程语言。自 1998 年第一个国际标准发布以来,C++ 每隔几年就会更新一次标准,每次更新都带来新的语法特性和标准库功能。
本文将从 C++98 一直讲到 C++23,逐一介绍各版本的主要语言和库特性。
从 new/delete
→ RAII → 智能指针 → 内存资源(std::pmr
)
C++ 的内存管理经历了从手动 new/delete 到 RAII 的资源自动释放,再到 C++11 引入 std::unique_ptr、std::shared_ptr 等智能指针实现安全托管,最终在 C++17 提供 std::pmr 内存资源框架,支持可定制的内存池与高性能分配策略,逐步形成从底层控制到高层抽象的完整体系。
从 std::thread
到 std::barrier
C++ 从 C++11 开始正式引入标准化的并发支持,包括 std::thread、std::mutex、std::future 等基础设施;C++17 增加了 std::shared_mutex 以优化读多写少场景;C++20 带来了协程、std::jthread 与 std::stop_token,简化线程管理与取消;C++23 则补充了 std::barrier、std::latch 等同步原语,逐步构建起完整的并发编程模型。
从模板黑魔法到 Concepts
C++ 的泛型与模板机制从最初的函数/类模板逐步演进:早期依赖 SFINAE 等技巧实现约束;C++11 引入 decltype、auto 提升类型推导能力;最终在 C++20 引入 Concepts,使模板具备显式约束与更清晰的错误信息,标志着从“模板黑魔法”走向可读、可维护的泛型编程。
从 Lambda 到 Ranges
C++ 虽然是一门多范式语言,但在标准演进中逐步引入了函数式编程的特性,使得代码更简洁,更具声明式风格,也让 C++ 在多范式编程中更好地支持函数式思维。本文将梳理这些特性的演进过程。