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