【发布时间】:2019-01-19 22:42:38
【问题描述】:
我在复习继承时,看到了基于以下代码的casting的三个规则。 (来自https://www.youtube.com/watch?v=EYuPBkgJtCQ)
class B{};
class D_priv: private B{};
class D_prot: protected B{};
class D_pub: public B{};
三个规则:
- 任何人都可以将
D_pub*转换为B*。D_pub是一种特殊的B。 -
D_priv的会员和朋友可以投D_priv*到B*。 -
D_prot的成员、朋友和孩子可以将D_prot*投给B*。
我很困惑如何理解这三个规则。 投射是否有一般条件? 成员、朋友和孩子是指这里吗?
我的问题主要是关于铸造而不是继承。
【问题讨论】:
-
@UKMonkey,你提到的帖子是关于继承的,但我是在询问演员阵容。
-
阅读你的规则;阅读问题的答案;你会发现它们是一样的。
-
@UKMonkey,我不知道铸造的一般条件是什么。
-
如果你知道怎么做,你可以投。私有基地基本上对其他人是不可见的,因此不会知道
D_priv和B之间的关系。而且你不能在不相关的类型之间进行转换。 -
@apple apple,这就是我想问的。非常感谢~但是根据规则2,D_priv的成员和朋友可以将D_priv*投给B*。这和你说的矛盾吗?
标签: c++ inheritance casting