规则规定,在公共(public)说明符的情况下 - 派生类的对象可以被视为基类的对象(反之亦然)。这意味着什么?
所有公共(public)元素(在任何类中)都可以被任何地方/任何地方访问吗?
这是不是指对于父类定义为public的属性和方法是可以被派生类访问的。但是在派生类的属性和方法是公共(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
但是反过来呢?
最佳答案
我想正确的问题是“父类可以访问 C++ 中派生类的成员(不是对象)吗?”
派生类可以访问基类的公共(public)和 protected 成员(数据成员和函数)。
类的公共(public)成员可以从任何地方访问。当然,它们需要通过该类的实例来访问。
But in the case that the attributes and methods from the derived class are public theyaren't accessible by the parent/base class?
如果您有派生类的实例,它们可以是。然后,您可以从基类访问派生类的公共(public)成员。
编辑:
示例,其中基类成员访问派生类的公共(public)成员,反之亦然。
class Base
{
public:
void funcBase();
};
class Derived : public Base
{
public:
void funcDerived();
};
void
Base::funcBase()
{
Derived d;
d.funcDerived();
}
void
Derived::funcDerived()
{
Base b;
b.funcBase();
}
int main()
{
Base b;
Derived d;
b.funcBase();
d.funcDerived();
}
关于c++ - C++中派生类的对象可以被父类访问吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26303104/