我不理解以下内容,当Derived
继承自Base
时,它可以通过派生类的函数访问其受保护成员。但是,如果Base
类试图从Derived
类中访问自己的成员(Derived
本身允许访问Base
),它就无法访问,为什么?
class Base {
protected:
int x;
};
class Derived : Base {
public:
void foo(Base* b);
};
void Derived::foo(Base* b) {
b->x = 2; // cannot access protected member,
// though Derived inherits from Base, why?
}
Derived
没有访问它自己从Base
继承而来的成员。它正在访问一些其他对象从Base
继承而来的成员。 - Mooing Duck