我有一个类List,它是Vector (我自己的类)类型的指针的成员。对于这个类,我重载了赋值操作符,并重新定义了复制构造函数。
问题是,我不确定是否必须为一个新类做同样的事情,它有一个List类型的成员(不是动态分配的)。
class List {
Vector *l;
int len;
// assignment operator and copy-constructor defined here
}
class Graf_Neorientat : public Graf {
List L;
...
};发布于 2019-04-05 22:55:15
可以对Graf_Neorientat类中的成员变量L进行赋值和复制,就像它是程序中的普通变量一样。因此,您不需要在Graf_Neorientat中重新编写代码,就可以在复制Graf_Neorientat时复制L。
现在,你可能想问的是,你是否需要在Graf_Neorientat中做一些“额外”的事情,使它也是可复制的(并且在这样做的时候复制L )。
假设Graf是可复制的(或者忽略Graf),答案是否定的。如果您的List类是可复制的,那么您的Graf_Neorientat也是可复制的。编译器将为您隐式定义赋值运算符和复制构造函数,该构造函数将依次调用List运算符来适当地复制L成员。
当然,如果你想用几种方法在Graf_Neorientat中禁用可复制性,你也可以定义一个不同的赋值操作符和复制构造函数,如果你想做一些其他的事情(很少见)。但是,正如您的示例中所给出的,Graf_Neorientat将执行您期望的操作。
https://stackoverflow.com/questions/55538053
复制相似问题