sizeof问题...

cnvb 2007-08-19 03:43:13
小生用VC6做了一个测试,源码如下:
#include <iostream>

using std::cout;

class BaseClass
{
public:
void PrintTest();
};

void Base::PrintTest()
{
cout << "Print from Base::PrintTest()" << endl;
}

void main()
{
BaseTest bt;
cout << "size of object bt = " << sizeof(bt) << endl;
}

这段程序的输出值竟然是:
size of object bt = 1


为什么??为什么???
...全文
84 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnvb 2007-08-19
  • 打赏
  • 举报
回复
你的类没有成员变量,成员函数应该被编器优化为普通函数
再有:
Inside C++ Object Modal一书中有详细说明:
class X {}; 这样的类sizeof(X)是1,里面由编绎器插进一个char,用来使这个Class的Objects获得一个独一无二的地址.

--------------------------------------------------------------

多谢yydrewdrew兄的指点...偶也正在看Inside C++ Object Modal这本书.你说的偶还没有看到.总也想不明.这下子明白了...完帖结分...再次谢谢...
yydrewdrew 2007-08-19
  • 打赏
  • 举报
回复
你的类没有成员变量,成员函数应该被编器优化为普通函数
再有:
Inside C++ Object Modal一书中有详细说明:
class X {}; 这样的类sizeof(X)是1,里面由编绎器插进一个char,用来使这个Class的Objects获得一个独一无二的地址.
cnvb 2007-08-19
  • 打赏
  • 举报
回复
yydrewdrew(满堂花醉三千客,一剑霜寒十四州)
如果有多态的话前面还有4bytes用来存放vtable指针
------------------------------------------------------

是的...我试过多态的方式了...但结果却是4...那么我的问题是这个1是从哪里来的??如果说因为vtable的原因这个对像是4可能说得过去.但是1呢?1个字节能存什么??
yydrewdrew 2007-08-19
  • 打赏
  • 举报
回复
如果有多态的话前面还有4bytes用来存放vtable指针
cnvb 2007-08-19
  • 打赏
  • 举报
回复
yydrewdrew(满堂花醉三千客,一剑霜寒十四州)
类的实例中只存放成员变量,不存放成员函数或者静态变量
------------------------------------------------------

回yydrewdrew兄.这个小生是明白的...但怎么也不明白为什么会是1呢??
cnvb 2007-08-19
  • 打赏
  • 举报
回复
代码拷错了,重发....对不住各位...

#include <iostream>

using std::cout;
using std::endl;
class BaseClass
{
public:
void PrintTest();
};

void BaseClass::PrintTest()
{
cout << "Print from Base::PrintTest()" << endl;
}

void main()
{
BaseClass bt;
cout << "size of object bt = " << sizeof(bt) << endl;
}
yydrewdrew 2007-08-19
  • 打赏
  • 举报
回复
类的实例中只存放成员变量,不存放成员函数或者静态变量

64,647

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧