继承复制构造函数

时间:2014-05-18 21:52:55

标签: c++11

假设我有一个A类,它提供了一个复制构造函数(接受另一个A)。

然后我有一个A的派生类B,它不提供复制构造函数。

我可以将A的复制构造函数继承到B中,类似于非复制构造函数的可能性吗?

注意:除了A。

中包含的状态外,B没有任何状态

1 个答案:

答案 0 :(得分:2)

如果除了基类的复制构造函数提供的内容之外不需要任何特殊行为,那么只需告诉编译器使用默认的复制构造函数就可以了,它将调用基类复制构造函数

#include <iostream>

class A {
public:
    int a;
    A()=default;
    A(const A& other) {
        std::cout << "Class A copy constructor called" << std::endl;
        a = other.a;
    }

};

class B: public A {
public :
    int b;
    B() = default;
    B(const B& other) = default;
};


int main() {
    B b1;
    b1.a = 1;
    b1.b = 2;

    B b2(b1);

    std::cout << b2.a << " - " << b2.b << std::endl;
}

输出:

Class A copy constructor called
1 - 2

编辑:

为了回答您的确切问题:我相信using指令使所有基类构造函数在派生类中可见。我个人不太喜欢这种行为,所以我更喜欢使用默认的构造函数而不是using指令,但那只是我。

相关问题