【发布时间】:2014-12-05 20:10:38
【问题描述】:
规则规定,在公共说明符的情况下 - 派生类的对象可以被视为基类的对象(反之亦然)。那是什么意思?
任何地方/任何地方都可以访问所有公共元素(在任何类中)吗?
这是否指的是父类定义为公共的属性和方法可由派生类访问。但是在派生类的属性和方法是公共的情况下,父/基类不能访问它们吗?
In a public base class
Base class members How inherited base class members appear in derived class
private: x ------------------------> x is inaccessible
protected: y ------------------------> protected: y
public: z ------------------------> public: z
但是反过来呢?
【问题讨论】:
-
如何从父类方法的代码中访问子类(非继承、非虚拟)成员?
-
如果我有
class Circle。我创建了一个circle r;的实例,例如访问公共属性 radius 是r.radius。如果我在我的主要部分写,那么该属性必须是公开的。如果我想在派生类中访问相同的radius,为什么我不能这样做。因为那个方法/成员是公开的? -
简单的回答,是的,他们可以。更好的问题是“他们应该是吗?”。考虑到这一点的事实听起来很像需要重新考虑的设计,除非在一些非常罕见和特殊的情况下,甚至可能不会......
-
他们可能不应该这样做。但我试图了解所有适用的规则 - 可以做什么 - 所以涵盖了所有场景。这就是为什么我不确定上面的反之亦然的说法。
标签: c++ class inheritance public