You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何派生类可访问基类私有成员?C++代码示例技术问询

代码可编译运行的原理解释

这段代码能正常编译运行,核心在于C++中友元权限的覆盖范围和嵌套类的成员访问规则:

  • FirstBase是Base的嵌套类,它通过friend class Base;将整个Base类声明为自己的友元。根据C++规则,被声明为友元的类,其所有成员(包括成员函数、嵌套类及其成员函数)都有权访问友元声明所在类的私有成员。
  • SecondBase作为Base的嵌套类,属于Base的成员范畴。因此SecondBase的成员函数t(),相当于Base的“内部成员”,自然享有Base作为FirstBase友元的权限,能直接访问FirstBase的私有成员x。

需要澄清的误区:这不是友元权限的传递——SecondBase并没有被FirstBase直接声明为友元,而是依托其所属的Base类的友元身份,获得了访问权限。

额外说明:代码中SecondBase构造函数里的FirstBase()调用是冗余的,派生类的默认构造函数会自动调用基类的默认构造函数,不影响代码的合法性。

内容的提问来源于stack exchange,提问作者Manarbek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 13:28:31