C++11新特性
C++11新特性
BeyondC++11新特性
1. 自动类型推导 (auto 和 decltype)
auto
允许编译器自动推断变量的类型。decltype
提供了一种方式来获取表达式的类型。
1 | int main() { |
2.初始化列表 (Uniform Initialization)
- **可以使用花括号 **
{}
来初始化任何类型的对象,统一了初始化语法。
1 | int main() { |
3. Lambda 表达式
- 允许创建匿名函数对象,便于编写简洁的回调函数。
1 |
|
4. 右值引用 (Rvalue References) 和移动语义 (Move Semantics)
- 改进了资源管理,允许更高效的资源转移而非复制。
- 允许函数接受和返回临时对象的引用,并通过移动语义优化资源转移,减少不必要的拷贝。
1 | class MyClass { |
5. 智能指针 (std::unique_ptr
, std::shared_ptr
, std::weak_ptr
)
- 提供了更好的内存管理机制,减少内存泄漏的风险。
- C++11引入了
std::shared_ptr
、std::unique_ptr
和std::weak_ptr
三种智能指针,用于自动管理动态分配的内存,避免内存泄漏和悬空指针。
1 |
|
6. nullptr
nullptr
是一个新的空指针常量,用于替代NULL
或0
,提高了代码的可读性和类型安全性。
1 | int main() { |
7. constexpr
- 允许在编译时计算表达式,用于定义常量表达式或执行编译时的计算。
1 | constexpr int factorial(int n) { |
8. 委托构造函数 (Delegating Constructors)
- 允许构造函数调用同一个类的其他构造函数。
1 | class C { |
9. 范围 for 循环 (Range-based for loop)
- 简化遍历容器或其他序列的操作。
1 |
|
10. 新的标准库功能
- **包括新的算法、容器和其他工具,如 **
std::array
、std::forward_list
、std::unordered_map
/set
等。
11. 线程支持 (Concurrency Support)
- **提供了线程库,包括 **
std::thread
、std::mutex
、std::future
等,使得多线程编程更为方便。
1 |
|
12. 强类型枚举
enum class
提供了强类型的枚举
1 | enum class Color { Red, Green, Blue }; |
13. 模板增强
- 包括变参模板和外部模板
1 | template<typename T> |
14. 类型别名和类型推断
using
关键字提供了新的类型别名语法。
1 | template<typename T> |
15. 属性规范
- 使用双方括号语法提供编译器优化和检查。
1 | [[noreturn]] void fail() { |
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果