C++98 与 C++11 语法特性对照表
作者:野牛程序员:2026-01-27 13:40:43C++程序设计阅读 2007
C++98 与 C++11 语法特性对照表
C++98 vs C++11 语法特性对照表
| 类别 | C++98 | C++11 | 差异/增强说明 |
|---|---|---|---|
| 类型推导 | 明确类型,如 int x = 5; | auto x = 5; | 自动类型推导,减少重复代码 |
| 空指针 | NULL | nullptr | 类型安全,避免整数混淆 |
| 循环遍历 | 标准 for/while/do-while | 范围 for:for(auto x: v) | 简化容器遍历 |
| 函数 | 默认参数、函数重载 | 尾返回类型:auto f() -> int | 支持复杂类型推导 |
| 模板 | 函数模板、类模板 | 可变参数模板:template<typename... Args>,别名模板:using Vec = std::vector<T> | 泛型增强,减少模板重复定义 |
| 常量与表达式 | const | constexpr | 编译期求值,提高性能 |
| 枚举 | enum Color {Red,Green}; | 强类型枚举:enum class Color{Red,Green}; | 类型安全,避免命名冲突 |
| 类与对象 | 构造函数、析构函数、虚函数、继承、多态 | 继承/多态同样支持;新增:默认函数 = default、删除函数 = delete、右值引用 | 增强对象管理和移动语义 |
| 移动语义 | 不支持 | T&&、std::move | 高效资源管理,减少不必要拷贝 |
| Lambda 表达式 | 不支持 | [capture](params){body} | 匿名函数,方便回调和算法 |
| 智能指针 | 手动管理 new/delete | std::unique_ptr, std::shared_ptr, std::weak_ptr | 自动管理内存,减少泄漏 |
| STL 容器 | vector, list, deque, map, set | 同 C++98,新增:unordered_map, unordered_set, array | 哈希容器和固定大小数组 |
| STL算法 | std::sort, std::find, std::copy | 支持移动迭代、lambda 支持算法参数 | 算法更灵活,支持移动语义 |
| 字符串 | C 风格字符串、std::string | 同 C++98,新增:原始字符串字面量 R"(raw)"、UTF 字符串字面量 u8"" u"" U"" | 简化字符串写法,支持多字节编码 |
| 异常 | try/catch/throw | 同 C++98 | 异常机制保持一致 |
| 命名空间 | namespace | 同 C++98 | 无变化 |
| 多线程 | 不支持(依赖平台或第三方库) | std::thread, std::mutex, std::atomic, std::condition_variable | 标准化多线程支持 |
| 折叠语法 | 不支持 | decltype(expr)、std::forward、std::move | 类型推导、完美转发、移动语义 |
| 用户字面量 | 不支持 | long double operator"" _km(long double x) | 自定义常量单位,更语义化 |
| 静态断言 | 不支持 | static_assert(condition, "message") | 编译期断言,提高类型安全 |
| 循环控制 | break, continue | 同 C++98 | 范围 for 更加语义化 |
核心差异总结
语法简化与自动化
auto、范围 for、尾返回类型、lambda 表达式类型安全增强
nullptr、强类型枚举、静态断言性能优化
右值引用、移动语义、智能指针
模板和泛型增强
可变参数模板、别名模板、完美转发
标准库增强
哈希容器、固定数组、正则表达式、多线程库
编译期求值
constexpr、静态断言
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

