永发信息网

C++中虚函数的使用

答案:2  悬赏:0  手机版
解决时间 2021-05-24 08:56
  • 提问者网友:我一贱你就笑
  • 2021-05-24 05:39

class A


};
int _tmain(int argc, _TCHAR* argv[])
{

      A a;
     std::cout<<"Size of A= "<<sizeof(a)<<endl;

////////////////////////////////////////////////////////////////////////////////////////////

class A

    public:
              virtual void fun0(){std::cout<<"A::fun0"<<endl;}
};
int _tmain(int argc, _TCHAR* argv[])
{

      A a;
     std::cout<<"Size of A= "<<sizeof(a)<<endl;

 

上面的输出结果A=1;
下面的结果输出A=4;

我想知道它这个1和4是怎么得到的?

最佳答案
  • 五星知识达人网友:罪歌
  • 2021-05-24 06:59

想要知道怎么得到的,就必须知道类在内存中是如何分配的。


一个空类的对象,事实上在内存中只有需要一个字节来定位它的起始位置就可以了,本来也没什么意义,只是为了占个位置,当它有了成员之后再从这个起始位置开始。


虚函数,其实是一个指针,指针占用四个字节,所以,后者的类对象大小就是4

全部回答
  • 1楼网友:大漠
  • 2021-05-24 07:57
1:由于A类是空类,编译器会安插一个char空类,标记它的每一个对象,因此其大小为1个字节。 每个实例在内存中都有一个独一无二的地址,为了达到这个目的,编译器往往会给一个空类隐含的加一个字节,这样空类在实例化后在内存得到了独一无二的地址. 4:这个类里面有一个函数,实际上它包含的是这个函数的地址指针。一个指针的SIZE 为 4。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯