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

继承的有关问题

2012-02-07 
继承的问题classaaa{public:intiprivate:intx}classbbb:privateaaa{public:intj}classccc:publicbbb{

继承的问题
class   aaa
{
public:
int   i;
private:
int   x;
};

class   bbb:private   aaa{
public:
int   j;
};

class   ccc:public   bbb{
};


如果
ccc   c;
aaa   a=c;
这样就会编译出错,这是因为类bbb将aaa的构造函数转为私有的缘故吗?为什么改为
bbb   b=c;
就不会出错了呢?

[解决办法]
bbb b=c;
凭什么把一个ccc赋值给一个bbb?虽然是继承,但不代表可以直接赋值,要赋值接口,或者说是(在本例中)是复制构造函数
而且一般不把派生类赋值给基类
[解决办法]
ccc并不是直接继承aaa,而bbb继承aaa是私有继承,所以ccc看不到aaa,因此不能用aaa a=c,一般不使用私有继承,通常情况下私有继承用处不是很大

热点排行