一、前言
前面文章中分析了对象内存布局,对象大小已经不难理解了,这里集中总结一下。
个人笔记,不保证严谨和正确☺,如有错误还望指出!
二、实例代码
2.1 代码
运行环境 64位,G++ 4.6.4版本
#include<iostream>
#include<string>
using namespace std;
class A {}; // 1
class B // 16
{
public:
int bv;
virtual void f() { cout << "B::f()" << endl; }
B(): bv(1) {}
};
class C // 16
{
public:
int cv;
virtual void h() { cout << "C::h()" << endl; }
C(): cv(2) {}
};
class D : public B //16
{
public:
int dv;
virtual void f() { cout << "D::f()" << endl; }
D(): dv(3) {}
};
class E : public B //16
{
public:
int ev;
virtual void f() { cout << "E::f()" << endl; }
E(): ev(4) {}
};
class F : public B, public C // 32
{
public:
int fv;
virtual void g() { cout << "F::g()" << endl; }
F(): fv(5) {}
};
class G : public D, public E // 40
{
public: