当前位置:首页C++程序设计 > 正文

C++98 与 C++11 语法特性对照表

作者:野牛程序员:2026-01-27 13:40:43C++程序设计阅读 2007
C++98 与 C++11 语法特性对照表

C++98 vs C++11 语法特性对照表

类别C++98C++11差异/增强说明
类型推导明确类型,如 int x = 5;auto x = 5;自动类型推导,减少重复代码
空指针NULLnullptr类型安全,避免整数混淆
循环遍历标准 for/while/do-while范围 for:for(auto x: v)简化容器遍历
函数默认参数、函数重载尾返回类型:auto f() -> int支持复杂类型推导
模板函数模板、类模板可变参数模板:template<typename... Args>,别名模板:using Vec = std::vector<T>泛型增强,减少模板重复定义
常量与表达式constconstexpr编译期求值,提高性能
枚举enum Color {Red,Green};强类型枚举:enum class Color{Red,Green};类型安全,避免命名冲突
类与对象构造函数、析构函数、虚函数、继承、多态继承/多态同样支持;新增:默认函数 = default、删除函数 = delete、右值引用增强对象管理和移动语义
移动语义不支持T&&std::move高效资源管理,减少不必要拷贝
Lambda 表达式不支持[capture](params){body}匿名函数,方便回调和算法
智能指针手动管理 new/deletestd::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::forwardstd::move类型推导、完美转发、移动语义
用户字面量不支持long double operator"" _km(long double x)自定义常量单位,更语义化
静态断言不支持static_assert(condition, "message")编译期断言,提高类型安全
循环控制break, continue同 C++98范围 for 更加语义化

核心差异总结

  1. 语法简化与自动化

    • auto、范围 for、尾返回类型、lambda 表达式

  2. 类型安全增强

    • nullptr、强类型枚举、静态断言

  3. 性能优化

    • 右值引用、移动语义、智能指针

  4. 模板和泛型增强

    • 可变参数模板、别名模板、完美转发

  5. 标准库增强

    • 哈希容器、固定数组、正则表达式、多线程库

  6. 编译期求值

    • constexpr、静态断言


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • C++98 与 C++11 语法特性对照表
  • 相关推荐

    最新推荐

    热门点击