读书人

派生类到基类转换的可访问性有关问题

发布时间: 2013-09-07 14:12:44 作者: rapoo

派生类到基类转换的可访问性问题
“如果是private继承,则从private继承类派生的类不能转换为基类。”
这句话不理解,定义一个private继承类对象,然后赋值给一个形参为基类引用的函数,此时调用基类的复制构造函数和赋值操作符,为什么不能发生转换?求解啊
[解决办法]
父亲说 这个东西属于你私有的 结果你却那他转送给叔叔 这不合理吧
[解决办法]
这里面有3个类的继承关系
看了下面的代码就明白了

#include <iostream>

class A
{
public:
virtual ~A() {}
};

class B: private A
{
};

class C: public B
{
};

int main()
{
C c;
B* pb = &c;
A* pa = &c; //通不过编译
return 0;
}

[解决办法]
没里没有为什么,因为这不是结果,是定义。 好比你老婆生的孩子随你姓, 别人的老婆生的孩子不随你姓。 但有个别人的老婆生的孩子实际是你的孩子,但他也不随你姓: 不是他不能随你姓, 是你(或他妈)故意不让他随你姓。

private 继承不是不能转换,是不允许转换,这叫规定。

读书人网 >C++

热点推荐