#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位系统下输出: vs中
16-8
24-8
Press any key to continue . . .
A中int i 4个+虚函数表指针run 4 =8
B 中 继承A(int i 4个)+虚继承 占4个 run是virtual占8个,run1()也是,但是已经有了虚函数表指针
如果在B中增加一个virtual run3() 则增加8个字节 为 24
网友评论