多重继承的对象大小

81 阅读1分钟

#include using namespace std;

class BB { public: void fun() { cout << "没有虚函数"; } }; class Base1 { public:

Base1() {}
virtual void f() { cout << "Base1::f()" << endl; }
virtual void g() { cout << "Base1::g()" << endl; }
virtual void h() { cout << "Base1::h()" << endl; }

};

class Base2 { public:

Base2(){}
virtual void f() { cout << "Base2::f()" << endl; }
virtual void g() { cout << "Base2::g()" << endl; }
virtual void h() { cout << "Base2::h()" << endl; }

};

class Base3 { public:

Base3() {}
virtual void f() { cout << "Base3::f()" << endl; }
virtual void g() { cout << "Base3::g()" << endl; }
virtual void h() { cout << "Base3::h()" << endl; }

};

class Derive : public BB, public Base1, public Base2, public Base3 { public:

Derive() {}
virtual void f() { cout << "Derive::f()" << endl; }
virtual void g_derive() { cout << "Derive::g_derive()" << endl; }

};

int main() {

Derive d;
cout << endl;
cout << sizeof(d) << endl;
int* p = new int(7);
cout << sizeof(p) << endl;
/*
24
8
共用了一个,总数为基类和(有虚函数的)
*/
return 0;

}