目录
- C++11新特性
- 语言特性
- 右值引用
- 移动语义
- 转发引用
- 可变参数模板
- 列表初始化
- 静态断言
- 类型推导
- lambda表达式
- decltype类型声明
- 类型别名
C++11新特性
总结C++11特性时发现整个内容较多,建议查看前先查看目录。
语言特性
右值引用
右值的分类为将亡值和字面量。将亡值就是将要销毁的对象以及临时的变量,字面量就是常量。左值就是变量。
右值引用,通常使用&&表示。- // 字面量
- int a = 1; // a变量,左值;b变量,右值
- int Func(int a, int b){
- return a + b;
- }
- int res = Func(1, 2); // 此时Func(1, 2)返回的就是一个临时变量,即是右值。res变量是一个左值,\
- 延长了Func(1, 2)右值的生命周期。
- int& b = a; // 左值引用
- int&& c = a; // 右值引用
复制代码 移动语义
移动语义指的是将一个对象的资源所有权转发给另一个对象。常用于类的移动构造函数和移动赋值运算符。
只要类中有任何构造函数,就不会生成默认构造函数
[code]int a = 1;int res = Func(1, 2);int&& b = move(a); // move用来实现左值到右值转变 int&& c = move(a); // std::moveclass MyClass{public: MyClass() = default; // 默认构造函数 MyClass(MyClass& obj){ // 拷贝构造函数 cout |