假设我有一个A类,它提供了一个复制构造函数(接受另一个A)。
然后我有一个A的派生类B,它不提供复制构造函数。
我可以将A的复制构造函数继承到B中,类似于非复制构造函数的可能性吗?
注意:除了A。
中包含的状态外,B没有任何状态答案 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
指令,但那只是我。