一段代码胜过数千字。
#include <iostream>
#include <type_traits>
using namespace std;
struct A
{
int a;
};
struct B : A
{
int b;
};
int main()
{
cout << is_standard_layout<B>::value << endl; // output false! WHY?
return 0;
}
来自标准布局类的定义(§9 类,第 7 段)
[...]
* 或者在最远的派生类中没有非静态数据成员并且最多有一个具有非静态数据成员的基类,或者没有具有非静态数据成员的基类,并且
[...]
在您的情况下,最派生的类及其基类都具有非静态数据成员。所以这不是标准布局。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)