c++11特性-defaut,delete

眉间皱痕 提交于 2020-01-23 13:31:17

1.defaut

c++中提供的默认构造函数,若无构造函数时可用,执行的默认构造函数效率更高

class base{
public://类中自带默认构造函数base()
	int num;
};

base a;//成功

当类中有构函数时,默认无参构造函数就会失效。

class base{
public:
	base(int num):num(num){
	}
	int num;
};

base a;//报错提示base中不存在默认构造函数

使用defaut即可默认构造无参函数.

class base{
public:
	base()=defaut;
	base(int num):num(num){
	}
	int num;
};

base a;//ok

2.delete

删除(禁用)函数,用法与defaut一样.以删除拷贝函数为例.

class base{
public:
	base()=defaut;
	base(int num):num(num){
	}
	int num;
};

base a(3);//ok
base b(a);//对a进行了拷贝

使用delete后

class base{
public:
	base()=defaut;
	base(const base &)=delete;
	base(int num):num(num){
	}
	int num;
};

base a(3);//ok
base b(a);//erro 无法引用拷贝函数,它是已删除的函数;
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!