#include<iostream>
#include <memory.h>
#include <assert.h>
using namespace std;
class A{
char k[3];
public:
virtual void aa(){};
};
class B:virtual public A{ public A
char j[3];
public:
virtual void bb(){};
};
class C:virtual public B{ public B
char i[3];
public:
virtual void cc(){};
};
int main(){
cout<<"sizeof(A): "<<sizeof(A)<<endl;
cout<<"sizeof(B): "<<sizeof(B)<<endl;
cout<<"sizeof(C): "<<sizeof(C)<<endl;
return 0;
}
答案为8,20,32,
如果取消虚继承则答案为8,12,16
#include<iostream>
#include <memory.h>
#include <assert.h>
using namespace std;
class A{
char k[3];
public:
virtual void aa(){};
};
class B:virtual public A{
char j[3];
public:
virtual void bb(){};
};
class C: public B{
char i[3];
public:
virtual void cc(){};
};
int main(){
cout<<"sizeof(A): "<<sizeof(A)<<endl;
cout<<"sizeof(B): "<<sizeof(B)<<endl;
cout<<"sizeof(C): "<<sizeof(C)<<endl;
return 0;
}
答案为8,20,24