通过好友访问受保护的成员

Access protected member through friend

本文关键字:成员 受保护 访问 好友      更新时间:2023-10-16

假设类B继承了类A,而B继承了friend的C。类A有一个受保护的成员foo

C类是否可以访问foo?C++标准修订版之间有什么不同吗?

示例:

class A {
protected:
    void foo() {}
};
class B : public A {
    friend class C;
};
class C {
    void func() {
        B b;
        b.foo();
    }
};
是的,C可以访问B::foo。朋友可以访问你可以访问的任何内容。由于B可以访问fooC也可以访问B::foo。然而,friend无法接触到朋友的朋友。

不,据我所知,编译器之间在这个问题上没有区别。