C++11新特性(一):语言特性
目录[*]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; // 右值引用移动语义
移动语义指的是将一个对象的资源所有权转发给另一个对象。常用于类的移动构造函数和移动赋值运算符。
只要类中有任何构造函数,就不会生成默认构造函数
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
页:
[1]