Redian新闻
>
关于C++中一个Class的大小 (转载)
avatar
关于C++中一个Class的大小 (转载)# Programming - 葵花宝典
f*a
1
【 以下文字转载自 JobHunting 讨论区 】
发信人: fololunsia (我心飞扬), 信区: JobHunting
标 题: 关于C++中一个Class的大小
发信站: BBS 未名空间站 (Sun May 27 13:54:24 2007)
class A{
public:
int x;
void foo() const{
cout<}
};
int main(){
cout<return 0;
}
结果是4 bytes。那么foo()的空间到哪里去了?
avatar
c*h
2
只计算数据的空间吧
hehe

【在 f********a 的大作中提到】
: 【 以下文字转载自 JobHunting 讨论区 】
: 发信人: fololunsia (我心飞扬), 信区: JobHunting
: 标 题: 关于C++中一个Class的大小
: 发信站: BBS 未名空间站 (Sun May 27 13:54:24 2007)
: class A{
: public:
: int x;
: void foo() const{
: cout<: }

avatar
f*a
3
那么程序呢?在run time的时候如何知道foo()程序在哪里?总要有个地址吧。

【在 c*******h 的大作中提到】
: 只计算数据的空间吧
: hehe

avatar
t*t
4
程序只有一份,计算size就没意义了

【在 f********a 的大作中提到】
: 那么程序呢?在run time的时候如何知道foo()程序在哪里?总要有个地址吧。
avatar
k*f
5
virtual function才是run time确定的,所以有额外lookup table

【在 f********a 的大作中提到】
: 那么程序呢?在run time的时候如何知道foo()程序在哪里?总要有个地址吧。
avatar
f*a
6
难道没有一个指针什么的指向foo()么?
换句话说,在编译的时候,Class A的结构是什么样的?
avatar
k*f
7
你用nm就可以看到具体的指针

【在 f********a 的大作中提到】
: 难道没有一个指针什么的指向foo()么?
: 换句话说,在编译的时候,Class A的结构是什么样的?

avatar
r*r
8
这个编译器看作是普通的function, 和C function 一样。
非virutual 的 member function 其实都和普通C function 一样,只不过对有些
function
编译器会加个this 参数,你这个例子里foo函数内部没有reference 到class 的任何东
西,
所以compiler 连this 都不会加。

【在 f********a 的大作中提到】
: 难道没有一个指针什么的指向foo()么?
: 换句话说,在编译的时候,Class A的结构是什么样的?

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。