该规则规定,在派生类的公共说明符(派生类对象)的情况下,可以将其视为基类的对象(反之亦然)。那是什么意思?C++中派生类的对象可以被父类访问吗?
任何/任何地方的所有公共元素都可以访问吗?
这是否指的是这样一个事实,即父类的属性和方法定义为public可由派生类访问。但是如果派生类中的属性和方法是公共的,那么它们不能被父类/基类访问?
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
但是反过来呢?
如何从父类方法的代码中访问子类(非继承,非虚拟)成员? – hyde 2014-10-10 15:46:21
如果我有'班级圈子'。例如,我创建了一个“circle r”的实例,访问公共属性radius为'r.radius'。如果我在主要部分中写入该属性,则属性必须公开。如果我想在派生类中访问相同的'radius',为什么我不能这样做。既然该方法/成员是公开的? – YelizavetaYR 2014-10-10 15:58:20
简单的答案,是他们*可以*。更好的问题是“他们应该是?”。事实上,正在考虑这种气味很像一个需要重新思考的设计,除非在一些非常罕见和特殊的情况下,甚至可能不是那样...... – twalberg 2014-10-10 16:04:15