#include <iostream>
using namespace std;
class A
{
int i;
void f() {}
virtual void run() {}
virtual void run1() {}
virtual void run2() {}
};
class B :virtual public A
{
public:
virtual void run() {}
virtual void run1() {}
};
int main() {
cout << sizeof(A) << endl;
cout << sizeof(B) << endl;
system("pause");
return 0;
}
64位系統(tǒng)下輸出: vs中
16-8
24-8
Press any key to continue . . .
A中int i 4個+虛函數(shù)表指針run 4 =8
B 中 繼承A(int i 4個)+虛繼承 占4個 run是virtual占8個,run1()也是,但是已經(jīng)有了虛函數(shù)表指針
如果在B中增加一個virtual run3() 則增加8個字節(jié) 為 24