| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 798 人关注过本帖
标题:虚基类多出来的空间问题
只看楼主 加入收藏
civilherui
Rank: 2
来 自:陕西榆林
等 级:论坛游民
威 望:2
帖 子:67
专家分:97
注 册:2015-1-18
结帖率:100%
收藏
 问题点数:0 回复次数:8 
虚基类多出来的空间问题
#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个字节用来存放什么?
搜索更多相关主题的帖子: 空间 public 
2015-09-05 00:17
civilherui
Rank: 2
来 自:陕西榆林
等 级:论坛游民
威 望:2
帖 子:67
专家分:97
注 册:2015-1-18
收藏
得分:0 
大概猜测应该是一个地址,我又认为它是地址,顺着地址找是一个12字节的数据,不知道是什么。

我走向的将是机械、电子、编程的集成之路。
2015-09-05 17:29
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
在面向对象的编程中,试图探寻对象的内部细节是大忌,书上有讲的。

授人以渔,不授人以鱼。
2015-09-05 21:16
civilherui
Rank: 2
来 自:陕西榆林
等 级:论坛游民
威 望:2
帖 子:67
专家分:97
注 册:2015-1-18
收藏
得分:0 
回复 3楼 TonyDeng
哦,谢谢,但是我看的书上没讲。

我走向的将是机械、电子、编程的集成之路。
2015-09-06 18:09
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
探究是因为兴趣,有兴趣才有学习的动力。你可以先定义个空类调试看看,慢慢再添加类成员看。
其实,你都学到类了,比我强。我还不知道怎么在c++里用类的,主要是没有深究下去的兴趣。

能编个毛线衣吗?
2015-09-07 08:48
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 5楼 wmf2014
多看书就知道这值不值得探究

授人以渔,不授人以鱼。
2015-09-07 18:59
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
回复 6楼 TonyDeng
同意,但是吃了亏才懂得更深刻。。。

剑栈风樯各苦辛,别时冰雪到时春
2015-09-07 19:24
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
我记得类里不光有你自己添加的各种成员,类还会自动生成一个表来管理数据还会自动生成其他的一些东西

一片落叶掉进了回忆的流年。
2015-09-07 22:19
r316999443
Rank: 7Rank: 7Rank: 7
来 自:星城长沙
等 级:黑侠
威 望:1
帖 子:597
专家分:501
注 册:2006-11-7
收藏
得分:0 
虚类指针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 编辑 ]
2015-09-07 23:14
快速回复:虚基类多出来的空间问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024147 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved