关于继承的问题 百思不得其解
#include<iostream>
using namespace std;
class A
{
int x;
public:
A(int a):x(a)
{
cout<<"Consturcting A\n";
}
};
class B :public A
{
public:
B()
{
cout<<"Consturting B\n";
}
};
int main()
{
B b;
return 0;
}
error C2512: 'A' : no appropriate default constructor available问错在哪里
[解决办法]
问题很明显:B b时调用B的构造函数,但是派生类的构造函数会调用基类的构造函数A(int a):x(a);基类的构造函数需要一个参数,所以会出错: 'A' : no appropriate default constructor available:没有合适的默认构造函数。
[解决办法]
修改方法1:给基类的构造函数加上默认参数:
#include<iostream>
using namespace std;
class A
{
int x;
public:
A(int a = 0):x(a)//默认值为0
{
cout<<"Consturcting A\n";
}
};
class B :public A
{
public:
B()
{
cout<<"Consturting B\n";
}
};
int main()
{
B b;
return 0;
}
修改方法2:显示调用基类构造函数时加上参数:
class A
{
int x;
public:
A(int a ):x(a)
{
cout<<"Consturcting A\n";
}
};
class B :public A
{
public:
B(int i):A(i)
{
cout<<"Consturting B\n";
}
};
int main()
{
B b(0);
return 0;
}
把分全给我吧!哈哈
[解决办法]
- C/C++ code
#include<iostream>using namespace std;class A{ int x;public: A() //这儿 { cout<<"A default constructor"<<endl; } A(int a):x(a) { cout<<"Consturcting A\n"; } };class B :public A{public: B() { cout<<"Consturting B\n"; } };int main(){ B b; return 0;}
[解决办法]
问题很清楚啊:
error C2512: 'A' : no appropriate default constructor available问错在哪里
意思就是:A中没有合适的构造函数,
B继承A,那么构造函数B(),要先调用A的构造函数A(),你在A中加上无参构造函数A(),就可以了
[解决办法]
显然是参数不够,基类也是需要参数的,楼主!
[解决办法]
B的构造函数少了一个参数
B继承自A 也就是说A的成员B都有
A中有一个成员变量X B中也有一个X
在B构造时候函数需要一个int 类型的参数 并显示的调用父类A的构造函数
B(int i):A(i)