f********a 发帖数: 1109 | 1 【 以下文字转载自 JobHunting 讨论区 】
发信人: fololunsia (我心飞扬), 信区: JobHunting
标 题: 关于C++中一个Class的大小
发信站: BBS 未名空间站 (Sun May 27 13:54:24 2007)
class A{
public:
int x;
void foo() const{
cout<<"A Class"<
}
};
int main(){
cout<
return 0;
}
结果是4 bytes。那么foo()的空间到哪里去了? |
c*******h 发帖数: 527 | 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<<"A Class"<: }
|
f********a 发帖数: 1109 | 3 那么程序呢?在run time的时候如何知道foo()程序在哪里?总要有个地址吧。
【在 c*******h 的大作中提到】 : 只计算数据的空间吧 : hehe
|
t****t 发帖数: 6806 | 4 程序只有一份,计算size就没意义了
【在 f********a 的大作中提到】 : 那么程序呢?在run time的时候如何知道foo()程序在哪里?总要有个地址吧。
|
k****f 发帖数: 3794 | 5 virtual function才是run time确定的,所以有额外lookup table
【在 f********a 的大作中提到】 : 那么程序呢?在run time的时候如何知道foo()程序在哪里?总要有个地址吧。
|
f********a 发帖数: 1109 | 6 难道没有一个指针什么的指向foo()么?
换句话说,在编译的时候,Class A的结构是什么样的? |
k****f 发帖数: 3794 | 7 你用nm就可以看到具体的指针
【在 f********a 的大作中提到】 : 难道没有一个指针什么的指向foo()么? : 换句话说,在编译的时候,Class A的结构是什么样的?
|
r****r 发帖数: 755 | 8 这个编译器看作是普通的function, 和C function 一样。
非virutual 的 member function 其实都和普通C function 一样,只不过对有些
function
编译器会加个this 参数,你这个例子里foo函数内部没有reference 到class 的任何东
西,
所以compiler 连this 都不会加。
【在 f********a 的大作中提到】 : 难道没有一个指针什么的指向foo()么? : 换句话说,在编译的时候,Class A的结构是什么样的?
|