发布网友 发布时间:2024-11-30 22:00
共1个回答
热心网友 时间:2024-12-09 03:13
本文总结了C++11相比C++98的一些重要变化,具体如下:
1. 指针空值: 引入了nullptr,替代NULL,避免了二义性。
2. nullptr与nullptr_t: 类型nullptr_t,用于声明nullptr。
3. = default: 用于声明默认构造函数、拷贝构造函数、拷贝赋值函数、析构函数等,使类成为POD类型。
4. = delete: 阻止默认函数生成,如禁止拷贝构造函数和拷贝赋值函数生成。
5. 左值、右值: 引入右值引用,支持更高效的移动语义。
6. 列表初始化: 简化代码编写,声明initializer_list模板类构造函数。
7. 扩展using: 可用于声明命名空间外的标识符。
8. auto: 作为类型指示符,自动推导类型,简化复杂类型定义。
9. decltype: 返回表达式的类型,在编译期进行。
10. 基于范围的for循环: 简化数组和STL容器的迭代访问。
11. 多线程支持: 引入多线程API,简化线程编程。
12. 智能指针: 用unique_ptr、shared_ptr、weak_ptr替代auto_ptr。
13. lambda函数: 表示匿名函数,支持函数式编程。
14. _Pragma("once"): 保证头文件被包含一次。
15. 变长参数宏: 用省略号和__VA_ARGS__处理变长参数。
16. char和wchar_t转换: 优化转换机制,避免未定义行为。
17. long long类型: 提供至少位的有符号整型。
18. 类型扩展: 标准定义的有符号整型,对应无符号版本。
19. extern "C": 防止C++名称重整,兼容C文件。
20. 静态断言: 在编译期进行断言检查。
21. noexcept替代throw: 提供更明确的异常抛出控制。
22. 快速初始化: 简化成员变量初始化。
23. sizeof扩展: 支持类的非静态成员。
24. friend修改: 放弃class关键字,简化类模板的友元声明。
25. final和override: 控制派生,明确继承意图。
26. 函数模板默认参数: 支持函数模板的默认参数。
27. 外部模板: 避免重复生成模板实例化代码。
28. 局部匿名类型: 作为模板参数。
29. 继承构造函数: 通过using简化。
30. 委派构造函数: 通过委派简化公共逻辑。
31. 非受限联合体: 支持更多用例。
32. 字面量操作符: 解析特定后缀字符串为临时变量。
33. 枚举类型扩展: 改进枚举特性和行为。
34. 最小垃圾回收: 安全派生指针支持。
35. 常量表达式: 支持在编译期计算。
36. 线程局部存储: 为每个线程提供存储空间。