| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 693 人关注过本帖
标题:求sizeof()输出结果!!
只看楼主 加入收藏
paopao
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-9-1
收藏
 问题点数:0 回复次数:6 
求sizeof()输出结果!!

class CObject
{
public:
long ID;
CObject *pOb;
virtual long GetID(){return ID;}
};
class CMyObject:public CObject
{
long myID;
long GetID(){return myID;}
static long nRef;
};
long CMyObject::nRef=0;

#include<iostream.h>
void main()
{
CObject *p=new CMyObject;
cout<<sizeof(CObject)<<"\n";
cout<<sizeof(CMyObject)<<"\n";
cout<<sizeof(p)<<"\n";
cout<<sizeof(*p)<<"\n";
delete p;
} //结果是多少?请我详解一下了,谢谢。

搜索更多相关主题的帖子: sizeof 结果 输出 
2006-09-13 11:37
lisypro
Rank: 4
等 级:业余侠客
威 望:3
帖 子:695
专家分:216
注 册:2005-9-25
收藏
得分:0 

只要用虚函数用sizeof得到的就是4


长期承接管理系统
代做各种vb/ / vc小程序
QQ:82341763
手机:13623290828
群号 11619730
2006-09-13 12:46
compal
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-9-13
收藏
得分:0 

我計算的答案是:
12
12
4
12
運行的結果是:
12
16
4
12
有誰能解釋下運行的結果?

2006-09-13 15:51
olivezhang
Rank: 1
等 级:新手上路
帖 子:223
专家分:0
注 册:2005-9-14
收藏
得分:0 
void main()
{
CObject *p=new CMyObject;
cout<<sizeof(CObject)<<"\n"; (1)//12: sizeof(long) = 4, *pOb是32位指针, sizeof(pOb) = 4, 这是一个虚基类,含一个VPTR指针,此指针指向虚函数表VTABLE,VTABLE存放的是virtual function的入口地址, sizeof(VPTR) = 4
cout<<sizeof(CMyObject)<<"\n"; (2)//16: 子类中含一static variable,此不计入类中.
cout<<sizeof(p)<<"\n"; (3)//4: p是32位的指针
cout<<sizeof(*p)<<"\n"; (4)//12: p本身是基类的指针,它指向派生类对象来实现多态,实现多态就是利用VPTR指针,(此为俺的推断)所以答案仍和(1)同.
delete p;
}

谷底深深行 ,峰顶漫漫步......@_@
2006-09-13 17:05
compal
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-9-13
收藏
得分:0 

以下是我朋友給出的答案:
"類中的函數不占空間, 只有在調用時才會實現, 但虛函數占4個字節的大小,

大小 = 數據成員大小 + 虛函數大小 + 基類大小

靜態數據成員應該也不算整個類的大小, 他屬於整個類但不是某個對象

例如CObject obj;

COnject obj2;

nRef不屬於obj1也不屬於obj2, 而是屬於CObject,

p是CObject定義的, 所以他指向CObject,

CObject *p;

P是指針,
但*p代表的就是CObject的一個物件了.
以上我自己的理解, 可能有錯誤, 僅供參考."

我是初學C++,正在尋找這方面資料(入門的那種),哪位朋友可以提供。多謝了!!
我的郵件: chenyujsnt252@163.com

2006-09-13 18:14
yvtianzll
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2006-9-13
收藏
得分:0 
推荐lz看从<<inside the c++ object model>>
2006-09-13 20:57
corrupt
Rank: 2
等 级:新手上路
威 望:3
帖 子:535
专家分:0
注 册:2004-9-29
收藏
得分:0 
16
原来12+long myID(4)=16;

2006-09-14 11:11
快速回复:求sizeof()输出结果!!
数据加载中...
 
   



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

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