如何看网站的建站时间,宁化网站建设,微信开发网站建设程序,天津代理注册公司系列文章目录
C1114新标准——Variadic templates#xff08;数量不定的模板参数#xff09; C1114新标准——Uniform Initialization#xff08;统一初始化#xff09;、Initializer_list#xff08;初始化列表#xff09;、explicit C1114新标准—— d…系列文章目录
C1114新标准——Variadic templates数量不定的模板参数 C1114新标准——Uniform Initialization统一初始化、Initializer_list初始化列表、explicit C1114新标准—— delete、default 文章目录 系列文章目录1. default2. delete 1. default default是C11提出的新关键字效果为获得一个系统默认的构造函数内容为空只能用在五大成员函数上如果用在其他函数上编译器会报错。
class Zoo{
public:Zoo()default; //默认构造函数Zoo(const Zoo)default; //拷贝构造函数Zoo(const Zoo)default; //移动构造函数Zoo operator(const Zoo)default; //移动构造函数Zoo operator(const Zoo)default; //移动构造赋值重载
private:int d1;int d2;
}对于构造函数来说可以同时存在自定义构造函数和default构造函数因为构造函数本来就可以有很多个但对于剩下的四个函数来说当有了自定义构造函数的时候就不能再使用default否则编译器将报错。
class Zoo{
public:Zoo(int l1, int l2):d1(l1),d2(l2){};Zoo()default; //正确Zoo(const Zoo x):d1(x.d1),d2(x.d2){};Zoo(const Zoo)default; // 报错Zoo operator(const Zoo){d1 x.d1;d2 x.d2;return *this;}; //移动构造函数Zoo operator(const Zoo)default;// 报错private:int d1;int d2;
}技巧如果一个类里面的成员包含指针对象那么绝大部分都要自己定义构造函数不能使用default相反如果成员不包含指针那么基本上都可以使用default构造函数
2. delete delete的效果为该函数禁止使用可以用在五大成员函数之外的其他函数上。
class Zoo{
public:Zoo()delete; //禁止默认构造函数Zoo(const Zoo)delete; //禁止拷贝构造函数Zoo(const Zoo)delete; //禁止移动构造函数Zoo operator(const Zoo)delete; //禁止移动构造函数Zoo operator(const Zoo)delete; //禁止移动构造赋值重载
private:int d1;int d2;
}可以将特定参数的构造函数delete用于阻止该类初始化也可以将所有的构造函数全部delete这样使得该类成为一个静态类无法实例化。 将拷贝构造函数delete会使得该类成为一个单例。也可以通过将拷贝构造函数定义为private使得只有友元函数和该类的成员可以调用。