读书人

菜鸟有关问题

发布时间: 2012-02-06 15:52:44 作者: rapoo

初学者问题
#include <iostream.h>
class A{
public:
A(int x){i=x;}
private:
int i;
};
class B:public A{
public:
B(int y){j=y;};
private:
int j;
};
没继承就不报错,继续就编译报错,no appropriate default constructor available.请指教.

[解决办法]
你只提供了一个带参数的构造函数,没有提供一个无参构造函数,在继承时,需要构造该基类,编译器找不到一个无参构造函数,所以出错。
可以这么写:
class B:public A{
public:
B(int y):A(y) //构造带参基类构造函数
{
j=y;
};
private:
int j;
};

int main(){
B b(10);
return 0;
}
[解决办法]
B如果继承A的话,在初始化B的对象时候必须初始化A,而A是需要参数的,不给参数就无法构造A的对象。这么写:
class B:public A{
public:
B( int y ) : A( y ) { j = y; };
private:
int j;
};

读书人网 >C++

热点推荐