C++11 继承副本构造函数

C++11 继承副本构造函数,c++11,C++11,假设我有一个类a,它提供了一个复制构造函数(接受另一个a) 然后我有一个a的派生类B,它不提供复制构造函数 我可以将A的复制构造函数继承到B中吗?对于非复制构造函数,可能是什么 注意:B没有任何状态,除了A中包含的状态。如果除了基类的复制构造函数提供的内容之外,您不需要任何特殊行为,只需告诉编译器使用默认的复制构造函数就可以了,它将调用基类的复制构造函数 #include <iostream> class A { public: int a; A()=default

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

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

我可以将A的复制构造函数继承到B中吗?对于非复制构造函数,可能是什么


注意:B没有任何状态,除了A中包含的状态。

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

#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;
}

编辑:


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

复制构造函数不是通过构造函数继承C++11特性继承的。但是,编译器能够在某些条件下为派生类提供(“自定义”)副本构造函数。请添加代码示例或更多详细信息。
Class A copy constructor called
1 - 2