首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

菜鸟有关问题

2012-02-06 
初学者问题#include iostream.hclassA{public:A(intx){ix}private:inti}classB:publicA{public:B(in

初学者问题
#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;
};

热点排行