注册 登录
编程论坛 C++教室

虚基类多出来的空间问题

civilherui 发布于 2015-09-05 00:17, 800 次点击
#include<iostream>
using namespace std;
class sample3
{
    public:
    int a;
    int d;
};
class sample1:virtual public sample3
{
    public:
    int b;
};
class sample2:virtual public sample3
{
    public:
    int c;
};
class sample:public sample1,public sample2
{
};
int main()
{
    sample obj;
    cout<<sizeof(sample1)<<endl;
    cout<<sizeof(sample)<<endl;   
}
这个程序输出结果是16和24,sample1类多出的4个字节用来存放什么?还有sample多出的8个字节用来存放什么?
8 回复
#2
civilherui2015-09-05 17:29
大概猜测应该是一个地址,我又认为它是地址,顺着地址找是一个12字节的数据,不知道是什么。
#3
TonyDeng2015-09-05 21:16
在面向对象的编程中,试图探寻对象的内部细节是大忌,书上有讲的。
#4
civilherui2015-09-06 18:09
回复 3楼 TonyDeng
哦,谢谢,但是我看的书上没讲。
#5
wmf20142015-09-07 08:48
探究是因为兴趣,有兴趣才有学习的动力。你可以先定义个空类调试看看,慢慢再添加类成员看。
其实,你都学到类了,比我强。我还不知道怎么在c++里用类的,主要是没有深究下去的兴趣。
#6
TonyDeng2015-09-07 18:59
回复 5楼 wmf2014
多看书就知道这值不值得探究
#7
林月儿2015-09-07 19:24
回复 6楼 TonyDeng
同意,但是吃了亏才懂得更深刻。。。
#8
诸葛欧阳2015-09-07 22:19
我记得类里不光有你自己添加的各种成员,类还会自动生成一个表来管理数据还会自动生成其他的一些东西
#9
r3169994432015-09-07 23:14
虚类指针4个字节
 sampl1=a.4+d.4+c.4+sampl1.虚类指针4=16
 sampl=a+b+c+d+sampl虚类指针+sampl2虚类指针=24
还有 空类sampl占一个字节  但考虑到内存对齐 所以是24 不是25

[ 本帖最后由 r316999443 于 2015-9-8 08:22 编辑 ]
1