gpt4 book ai didi

c++ - C++中派生类的对象可以被父类访问吗?

转载 作者:行者123 更新时间:2023-11-30 02:43:15 25 4
gpt4 key购买 nike

规则规定,在公共(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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com