首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于具有另一个类B的数据成员的类A,是否有必要重载赋值运算符和复制构造函数?

对于具有另一个类B的数据成员的类A,是否有必要重载赋值运算符和复制构造函数?
EN

Stack Overflow用户
提问于 2019-04-05 22:49:11
回答 1查看 63关注 0票数 1

我有一个类List,它是Vector (我自己的类)类型的指针的成员。对于这个类,我重载了赋值操作符,并重新定义了复制构造函数。

问题是,我不确定是否必须为一个新类做同样的事情,它有一个List类型的成员(不是动态分配的)。

代码语言:javascript
复制
class List {
    Vector *l;
    int len;
    // assignment operator and copy-constructor defined here
}

class Graf_Neorientat : public Graf {
    List L;
    ...
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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将执行您期望的操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55538053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档