C++11新特性总结(相比C++98)

发布网友 发布时间: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. 线程局部存储: 为每个线程提供存储空间。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com