情况一:
class D{
public:
int a;
};
class A:virtual public D{
};
class B :virtual public D{
};
class C:public A,public B{
public:
int a1;
};
用sizeof(C)计算出等于16;
情况二:
class D{
public:
int a;
};
class A:public D{
};
class B :public D{
};
class C:public A,public B{
public:
int a1;
};
用sizeof(C)计算出等于12;
情况一本人理解不了哪位大神给分析分析吧
frank_20080215说法就不对了。不是3个a的size
#include <iostream>
using namespace std;
class D{
public:
int a;
int b;
};
class A:virtual public D{
};
class B :virtual public D{
};
class C:public A,public B{
public:
int a1;
};
int main()
{
cout << sizeof(C);
}
结果是20。
class D{
public:
int a;
};
class A:public D{
};
class B :public D{
};
class C:public A,public B{
public:
int a1;
};
int main()
{
cout << sizeof(D)<< endl;
cout << sizeof(A)<< endl;
cout << sizeof(C)<< endl;
}
结果是4 4 12
#include <iostream>
using namespace std;
class D{
public:
int a;
};
class A:virtual public D{
};
class B :virtual public D{
};
class C:public A,public B{
public:
int a1;
};
int main()
{
cout << sizeof(D)<< endl;
cout << sizeof(A)<< endl;
cout << sizeof(C)<< endl;
}
结果是4 8 16
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。