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

whdugh 2013-09-01 08:54:05
“如果是private继承,则从private继承类派生的类不能转换为基类。”
这句话不理解,定义一个private继承类对象,然后赋值给一个形参为基类引用的函数,此时调用基类的复制构造函数和赋值操作符,为什么不能发生转换?求解啊
...全文
137 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
todd_leftcode 2013-09-01
  • 打赏
  • 举报
回复
没里没有为什么,因为这不是结果,是定义。 好比你老婆生的孩子随你姓, 别人的老婆生的孩子不随你姓。 但有个别人的老婆生的孩子实际是你的孩子,但他也不随你姓: 不是他不能随你姓, 是你(或他妈)故意不让他随你姓。 private 继承不是不能转换,是不允许转换,这叫规定。
大尾巴猫 2013-09-01
  • 打赏
  • 举报
回复
这里面有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;
}
modyaj 2013-09-01
  • 打赏
  • 举报
回复
父亲说 这个东西属于你私有的 结果你却那他转送给叔叔 这不合理吧

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧