在学习“复制成员”的概念时,书中给出了如下说法。
In addition, a default assignment cannot be generated if a nonstatic member is a reference, a const,or a user-defined type without a copy assignment.
我不太明白这个声明到底想表达什么?或者这个说法指的是哪种场景?谢谢。
最佳答案
此语句与编译器自动为您编写的类(即用户定义类型)生成默认赋值运算符函数有关。默认分配通过将所有成员复制到新实例来工作。此声明涵盖三种情况,其中无法能够生成默认分配:
1) 当成员是引用时(即引用变量的实例,如指针)
class Foop {
int& reference;
};
2) 当成员变量为常量时
class Foople {
const int someConst;
};
3) 当其他一些类没有复制构造函数而你有该类型的成员变量时,显然不能使用默认方法(使用复制构造函数)复制它
class Uncopyable {
private:
Uncopyable(Uncopyable const& other);
};
class Fleep {
Uncopyable uncopyable;
};
在这些情况下,您需要编写自己的赋值运算符(或者可能不需要)。
关于c++ - 类的成员复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5320675/