读书人

类中定义的方法在它的每个对象占用的

发布时间: 2012-02-21 16:26:23 作者: rapoo

类中定义的方法,在它的每个对象占用的内存空间是多大?谢谢
Class A
{
public int x;
public int y;
public void foo();
}

Class A instanceOfA;

在instanceOfA对应的内存区间中会有x 和y,那 foo表现为什么呢,一个指针大小的空间吗?还是foo的代码有一个拷贝放在该对象中?

[解决办法]
去看《深度探索C++对象模型》
[解决办法]
foo表现为多了一个this指针做参数的普通函数。

[解决办法]
Class A
{
public int x;
public int y;
public void foo();
}

Class A instanceOfA;
------------
ms不是C++的表示吧
C++有Class??

如果是小写的,规范的
你的问题是A的sizeof,我在VC下测试的结果是8
原因在深度探索C++对象模型里有讲解
成员函数可以被看作是类作用域的全局函数
也就是说,实现与数据是分开的
数据是对象域的,只属于这个对象(静态成员变量也是全局的)
当把 public void foo();改成 virtual public void foo();
结果就会发生改变,这种情况下,类会为每一个对象准备一个VPTR,用来
存放虚函数的地址等相关信息
sizeof的结果是12,结果是12的原因是编译器有内存对齐的习惯

读书人网 >C++

热点推荐