C++ 一个继承类可以有多少构造函数?
当我试图为一个继承的类创建多个构造函数时,我抛出了一个错误:没有对A::A()的匹配函数调用。 我的代码如下所示:C++ 一个继承类可以有多少构造函数?,c++,class,c++11,inheritance,constructor,C++,Class,C++11,Inheritance,Constructor,当我试图为一个继承的类创建多个构造函数时,我抛出了一个错误:没有对A::A()的匹配函数调用。 我的代码如下所示: class A{ public: int a; int b; A(int i, int k) : a(i), b(k){ }; }; class B : public A{ public: B(){ }; B(int i, int k) : A(i, k){ };
class A{
public:
int a;
int b;
A(int i, int k) : a(i), b(k){
};
};
class B : public A{
public:
B(){
};
B(int i, int k) : A(i, k){
};
};
相当于
B() : A() {}
由于A
没有默认构造函数,这是一个编译时错误
您可以通过以下方式进行修复:
a
,或B
的默认构造函数的实现更改为使用A
的现有构造函数
B() : A(0, 0) {}
B(){}
这必须调用基类的一些构造函数。由于您没有在成员init列表中指定要调用的构造函数,因此它将尝试使用A()
,但它并不存在。您的问题不是构造函数的数量(原则上,您可以拥有任意数量的构造函数),而是您没有提供您尝试使用的构造函数。
B() : A(0, 0) {}
B(): A(42, 1337) {}