小编vyy*_*yyd的帖子

对 C++ 基类布局感到困惑

这是我的代码

#include <bits/stdc++.h>


class A{
    int val;
    char c;
};
class B:public A{
    char val;
};

struct C{
    int val;
    char c;
};
struct D:public C{
    char val;
};


int main()
{
    std::cout<<sizeof(B)<<std::endl; //8
    std::cout<<sizeof(D)<<std::endl; //12

}
Run Code Online (Sandbox Code Playgroud)

为什么class有不同的对齐方式struct


*** Dumping AST Record Layout
   0 | class A
   0 |   int val
   4 |   char c
     | [sizeof=8, dsize=5, align=4
     |  nvsize=5, nvalign=4]


*** Dumping AST Record Layout
   0 | class B
   0 |   class A (base)
   0 …
Run Code Online (Sandbox Code Playgroud)

c++ layout inheritance struct padding

5
推荐指数
1
解决办法
140
查看次数

标签 统计

c++ ×1

inheritance ×1

layout ×1

padding ×1

struct ×1