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

标签 c++ class inheritance public

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

相关文章:

C++ 结构函数体调用另一个结构函数,同一个模块

c# - 在我的类(class)访问返回值

delphi - 父类在另一个类中

c++ - C vector 错误 'char(*)[]: unknown size' - vector 删除迭代器超出范围

c++ - 在 Windows 上增加 io 优先级?

c++ - 如何向内置类/类型添加更多函数,如 int、double、std::string 等

javascript - 如何从数组中获取分类对象的值

c++ - 调用基类构造函数

c++ - C++ 中的名称隐藏静态成员函数 : good practice?

c++ - 返回类型与返回类型 (operator++) 不相同也不协变