default和delete
C++ 11中引入了两个新特性:=default;
、=delete;
。
=default;
用于默认构造函数中
当我们自己实现了有参构造函数以后编译器就不再为我们自动提供默认构造函数了,此时我们也就无法创建无参的对象。要创建无参的对象要么在类中写一个默认构造函数的空实现,要么使用=default;
。
cpp
class Student{
public:
Student(int tempage, string tmpname):age(tmpage),name(tmpname){}
private:
int age;
string name;
};
上面的类定义中并没有提供默认构造函数,就无法通过Student stu;
的方式来创建对象,只能使用Student stu(12,"zhangsan");
的方式来创建;要想创建无参的对象需要在类的有参构造函数上面添加Student(){}
或者Student()=default;
,两者的作用是等价的。
=delete;
使程序员可以手动禁用某个函数。
如果对某个函数使用了=delete;
,那么这个函数就不能再进行调用。