找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 1051|回复: 6

求sizeof()输出结果!!

[复制链接]
发表于 2009-11-3 23:55:38 | 显示全部楼层 |阅读模式 IP:江苏扬州
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;
} //结果是多少?请我详解一下了,谢谢。
发表于 2009-11-3 23:55:38 | 显示全部楼层 IP:江苏扬州
只要用虚函数用sizeof得到的就是4
回复

使用道具 举报

发表于 2009-11-3 23:55:39 | 显示全部楼层 IP:江苏扬州
我計算的答案是:
12
12
4
12
運行的結果是:
12
16
4
12
有誰能解釋下運行的結果?
回复

使用道具 举报

发表于 2009-11-3 23:55:41 | 显示全部楼层 IP:江苏扬州
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;
}
回复

使用道具 举报

发表于 2009-11-3 23:55:42 | 显示全部楼层 IP:江苏扬州
以下是我朋友給出的答案:
"類中的函數不占空間, 只有在調用時才會實現, 但虛函數占4個字節的大小,
大小 = 數據成員大小 + 虛函數大小 + 基類大小
靜態數據成員應該也不算整個類的大小, 他屬於整個類但不是某個對象
例如CObject obj;
COnject obj2;
nRef不屬於obj1也不屬於obj2, 而是屬於CObject,
p是CObject定義的, 所以他指向CObject,
CObject *p;
P是指針,
但*p代表的就是CObject的一個物件了.
以上我自己的理解, 可能有錯誤, 僅供參考."

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

使用道具 举报

发表于 2009-11-3 23:55:44 | 显示全部楼层 IP:江苏扬州
推荐lz看从<<inside the c++ object model>>
回复

使用道具 举报

发表于 2009-11-3 23:55:47 | 显示全部楼层 IP:江苏扬州
16
原来12+long myID(4)=16;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-30 19:33 , Processed in 0.221589 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表