C++11中=default的用法说明
- 默认构造函数:就是不接受任何参数的构造函数。比如,下列代码中的A()就是默认构造函数
- 拷贝构造函数:如果一个构造函数的第一个参数是自身类类型的引用,且任何额外参数都有默认值,则此构造函数是拷贝构造函数,如下面的A(const A&)
- 拷贝赋值运算符:拷贝赋值运算符在对类进行赋值的时候调用,其本质是一个名为operator=函数
- 析构函数:析构函数是在一个对象被销毁时调用的函数
class A { A();//默认构造函数 //拷贝控制成员: A(const A&);//拷贝构造函数 A& operator=(const A&);//拷贝赋值运算符 ~A();//析构函数 };
拷贝构造函数、拷贝赋值运算符、析构函数属于可以控制类的拷贝操作,称为拷贝控制成员 默认构造函数和拷贝控制成员都可以由编译器自动合成
class B { B() = default; B(const B&) = default; B& operator=(const B&) = default; ~B() = default; }
在类B中,拷贝控制成员和默认构造函数都可以被加上=default,这是C++11引入的新特性,通过使用这个标识显示地要求编译器生成合成的版本(而无需用户定义) 注意:
- 我们只能对具有合成版本的成员函数使用=default(即默认构造函数或拷贝控制成员)