假设我有一个基类及其派生类,派生如下:

class Base{
    private:
        _privateVar;

    protected:
        protectedVar;

    public:
        publicVar;

    void publicMethod(someValue, anotherValue)
    {
        protectedVar = someValue;
        publicVar = anotherValue;
    }
};

class Dervied: public Base{

    protected:
        protectedVar:
};

int main(void)
{
    Dervied d;
    d.publicMethod(valueA, valueB);
}


我的问题-

当我调用d.publicMethod(...)时,是否设置了Derived中的protectedVar或基类中的protectedVar?

谢谢

- 一种

最佳答案

当我调用d.publicMethod(...)时,是否设置了Derived中的protectedVar或基类中的?


该方法是Base类的成员,因此它只能访问Base类的成员。

如果该方法属于您的Derived类,则它将访问Derived类成员。
因为派生类数据成员在其自己的成员函数中进行访问时始终隐藏基类数据成员。

10-07 12:29