C++中如何得到类对象的长度..
我定义了一个类classabc{public:inti;intq;voidprti(){printf("i=%d,q=%d.\n",i,q);}};voidprtMsg(...
我定义了一个类
class abc
{
public:
int i;
int q;
void prti()
{
printf("i = %d, q = %d.\n",i,q);
}
};
void prtMsg(abc theClass)
{
theClass.i = 100;
theClass.prti();
}
int main(int argc, char* argv[])
{
abc myClass;
myClass.q = 50;
prtMsg(myClass);
return 0;
}
如上面一样...当执行 prtMsg(myClass); 时...C++发现没有拷贝构造函数,所以就自己复制对象,这个其实在反编译时可以看出的(我只是懂那么一点点儿.)...而复制的尺寸在反编译的时候也可以明确看出,,比如上面myClass的长度为0x40H,
我的主要问题是在于怎么通过函数实现知道这个类对象长度为0x40H,或者说,在C++中,类对象传参时分配栈内存的尺寸又是从哪里来的..怎么计算的??,....谢谢.
目的是怎么知道长度..而不是如何实现复制...谢谢..请不要理解错误. 展开
class abc
{
public:
int i;
int q;
void prti()
{
printf("i = %d, q = %d.\n",i,q);
}
};
void prtMsg(abc theClass)
{
theClass.i = 100;
theClass.prti();
}
int main(int argc, char* argv[])
{
abc myClass;
myClass.q = 50;
prtMsg(myClass);
return 0;
}
如上面一样...当执行 prtMsg(myClass); 时...C++发现没有拷贝构造函数,所以就自己复制对象,这个其实在反编译时可以看出的(我只是懂那么一点点儿.)...而复制的尺寸在反编译的时候也可以明确看出,,比如上面myClass的长度为0x40H,
我的主要问题是在于怎么通过函数实现知道这个类对象长度为0x40H,或者说,在C++中,类对象传参时分配栈内存的尺寸又是从哪里来的..怎么计算的??,....谢谢.
目的是怎么知道长度..而不是如何实现复制...谢谢..请不要理解错误. 展开
4个回答
展开全部
int size = sizeof(myClass);
这个可以知道占用内存大小
这个可以知道占用内存大小
追问
非常感谢。我自己搞混淆了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sizeof(abc);
追问
非常感谢。是我自己搞混淆了。把问题搞复杂了。。以为对象不能想结构体那样sizeof得到尺寸的。。。。~~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
能不能把你看到的40h相关的反汇编代码贴出来看一下?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询