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

为何继承A且含B类型成员的类C不属于C++11标准布局类?

类C为何是非标准布局类?

你给出的类C确实违反了C11标准布局类的规则,问题出在你列出的规则6表述不够完整——C11的完整规则是:标准布局类不能以属于集合M(c)的类型作为基类,其中M(c)包含以下类型:

  • 类c本身
  • 类c的所有基类
  • 类c的所有非静态数据成员的类型
  • 这些数据成员类型的所有基类

对应到类C的情况:

  • M(C)包含C、A(C的直接基类)、B(C的非静态数据成员)
  • C的基类是A,而A属于M(C)集合(同时是C的基类,也是C的成员B的非静态数据成员类型),因此违反了这条规则。

直白点说,当一个类的基类类型,出现在它自身的非静态数据成员(或成员的内部类型)中时,这个类就不符合标准布局的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 05:52:16