标准布局类
StanderdLayout
标准布局类要求所有非静态数据成员都具有相同的可访问性。
这是因为在C++内存模型中,凡处于同一个access section的数据,必定保证以其声明顺序出现在内存布局当中。然而被放置在多个access sections中的各笔数据,排列顺序就不一定了。这就要求所有所有非静态数据成员都具有相同的可访问性,以保证数据在内存中的顺序和在类中声明的顺序一样。
同时,这些数据成员可以在多个相同的access的section中实现,这并不会影响标准布局类的要求:
#include <iostream>
#include <type_traits>
using namespace std;
struct Test
{
public:
int a;
public:
int b;
};
int main()
{
cout << boolalpha << is_standard_layout_v<Test> << endl;
}
浙公网安备 33010602011771号