读书人

继承的有关问题

发布时间: 2012-02-07 17:45:36 作者: rapoo

继承的问题
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,一般不使用私有继承,通常情况下私有继承用处不是很大

读书人网 >C++

热点推荐