找人做网站要密码吗,陕西住房城乡建设网站,科技公司最全经营范围,自己主机做网站服务器新的默认成员函数
C11在6个默认成员函数基础上又加了两个:移动构造函数和移动赋值函数
针对移动构造函数和移动赋值运算符重载有一些需要注意的点如下#xff1a; 小结#xff1a;
#xff08;1#xff09; 生成默认移动构造的条件比较严苛#xff1a;必须是没有实现析…新的默认成员函数
C11在6个默认成员函数基础上又加了两个:移动构造函数和移动赋值函数
针对移动构造函数和移动赋值运算符重载有一些需要注意的点如下 小结
1 生成默认移动构造的条件比较严苛必须是没有实现析构函数 、拷贝构造、拷贝赋值重载中的任意一个才会生成默认移动构造函数。
2没有移动构造函数编译器会自动调拷贝构造函数 例如有一个person类
不写拷贝构造编译器会自动生成拷贝构造同样不写构造拷贝构造移动构造编译器才会生成默认移动构造 假设我们把其他类里的移动构造函数屏蔽调编译器就调不了没有移动构造函数编译器会自动调拷贝构造函数 假设我们给person类加一个析构函数我们发现它就调不了默认移动构造了 default 假设我们要释放一下内存调了析构那么编译器就不会再生成默认移动构造函数。
我们可以利用default强制编译器生成默认移动构造函数但是强制生成默认移动构造函数会导致编译器不再生成默认拷贝构造函数这个时候有两个选择
1.手动写一个拷贝构造函数2.default强制编译器再生成一个默认拷贝构造函数: delete
可以强制性禁止生成默认函数。
例如现在不让生成右值: 可变参数模板
我们之前知道可变参数函数printf: C11把可变参数扩展到了模板。格式如下:
可变参数模板可以识别参数类型个数: 可以通过sizeof()计算参数包的个数: