我遇到错误,不知道出什么问题了
我尝试过省略构造函数。
我遇到以下错误:
在构造函数'B :: B(int,int)'中:没有匹配的函数可以调用'A :: A()'
笔记候选人为:
A :: A(const A&)
A :: A(int,int)
#include <iostream>
using namespace std;
class A{
public:
int a;
int b;
A(int a1, int b1){
a=a1; b = b1;
}
};
class B : public A {
public:
int c;
int d;
int e;
B(int c1=10, int d1=20){
c=c1; d=d1;
e = a * b;
}
void show(){
cout <<"a = "<<a<<endl;
cout <<"b = "<<b<<endl;
cout <<"c = "<<c<<endl;
cout <<"d = "<<d<<endl;
cout <<"e = "<<e<<endl;
}
};
int main() {
A a(2,2);
B b;
b.show();
return 0;
}
答案 0 :(得分:5)
B
继承自A
,因此它需要构造一个A
,但是您没有A
的默认构造函数,也没有显式调用{ A
的初始化列表中的{1}}。
您需要这样的东西
B
或将B(int c1=10, int d1=20) : A(c1, d1) {
c=c1; d=d1;
e = a * b;
}
设为默认可构造。
此外,您还应该同时使用A
,c
和d
的初始化列表,而不是在构造函数的主体中分配(尽管优化程序会请在这种情况下进行处理,最好是始终以正确的方式进行操作)
e