class Base {
public:
class FirstBase {
friend class Base;
int x = 10;
};
class SecondBase : public FirstBase {
public:
SecondBase() : FirstBase() {}
void t() { std::cout << FirstBase::x; }
};
};
这段代码可以编译并运行,但我不明白为什么它可以运行。可以解释或引用来源来阅读吗?
我使用 gcc 版本 11.4.0 std=C++17
因为Base是FirstBase的朋友。因此,在 Base 内您可以访问 FirstBase 中的所有内容。而且 SecondBase 位于 Base 内部,因此 SecondBase 可以访问 FirstBase。如果您删除好友关系或将 SecondBase 移至 Base 之外,它会如您所料立即中断。