在学习“复制成员”概念时,书中给出了如下说法。
此外,如果非静态成员是引用、const 或没有复制赋值的用户定义类型,则无法生成默认赋值。
我不太明白这个声明到底想传达什么?或者说这个说法指的是哪一种场景?谢谢。
该语句与编译器自动为您编写的类(即用户定义类型)生成默认赋值运算符函数有关。默认分配的工作方式是将所有成员复制到新实例。该语句涵盖了默认分配的三种情况not能够生成:
1) 当成员是引用时(即引用变量的实例,如指针)
class Foop {
int& reference;
};
2)当成员变量为常量时
class Foople {
const int someConst;
};
3)当其他一些类没有复制构造函数并且您有该类型的成员变量时,显然不能使用默认方法(使用复制构造函数)复制它
class Uncopyable {
private:
Uncopyable(Uncopyable const& other);
};
class Fleep {
Uncopyable uncopyable;
};
在这些情况下,您需要编写自己的赋值运算符(或者可能不需要)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)