一个继承的类可以有几个构造函数?

Jas*_*ang 0 c++ inheritance constructor class c++11

当我试图为一个继承的类创建多个构造函数时,我抛出一个错误:没有匹配的函数调用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){  
    };  


};  
Run Code Online (Sandbox Code Playgroud)

R S*_*ahu 6

B() {}  
Run Code Online (Sandbox Code Playgroud)

相当于

B() : A() {}
Run Code Online (Sandbox Code Playgroud)

由于A没有默认的构造函数,因此是编译时错误。

您可以通过以下方法修复它:

  1. A或添加默认构造函数
  2. 通过将B的默认构造函数的实现更改为使用的现有构造函数A

    B() : A(0, 0) {}
    
    Run Code Online (Sandbox Code Playgroud)