Byt*_*e95 9 c++ inheritance constructor sizeof
我倾向于认为我对C++内部和内存布局有很好的把握,但这个让我感到困惑.我有以下测试代码:
#include <stdio.h>
struct Foo
{
//Foo() {}
int x;
char y;
};
struct Bar : public Foo
{
char z[3];
};
int main()
{
printf( "Foo: %u Bar: %u\n", (unsigned)sizeof( Foo ), (unsigned)sizeof( Bar ) );
}
Run Code Online (Sandbox Code Playgroud)
输出是合理的:
Foo:8 Bar:12
但是,这是非常奇怪的部分,如果我取消注释Foo()上的简单默认构造函数,sizeof(Bar)会发生变化!如何添加ctor可能会改变这些类的内存布局?
Foo:8 Bar:8
使用gcc-7.2编译
| 归档时间: |
|
| 查看次数: |
324 次 |
| 最近记录: |