首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

类中定义的方法,在它的每个对象占用的内存空间是多大?多谢

2012-02-21 
类中定义的方法,在它的每个对象占用的内存空间是多大?谢谢ClassA{publicintxpublicintypublicvoidfoo()

类中定义的方法,在它的每个对象占用的内存空间是多大?谢谢
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的原因是编译器有内存对齐的习惯

热点排行