标准布局类

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;
}
posted @ 2024-05-16 16:48  杨忆州  阅读(12)  评论(0)    收藏  举报