2431202505 发表于 2014-3-19 22:33:55

c++方法的覆盖

我想问下大家父类的方法被子类覆盖后那么父类和子类在内存中是怎么分配的,父类和子类中被覆盖的方法又是怎么分配的?
我想问下一个父类生出两个子类,只建立子类对象初始化变量,那么父类中的变量会变成什么?

仰望天上的光 发表于 2014-3-19 22:33:56

从内存布局上来说,子类相当于包含一个无名的父类成员变量(只所以可以无名是因为只可能有一个这样的对象)

仰望天上的光 发表于 2014-3-21 20:59:06

类的成员函数本身不在对象中占据空间。有虚函数的类存在一个虚表,虚表记录了该类的所有虚函数。当子类覆盖该函数的时候,子类的虚表就改变虚表中相应虚函数位置的记录使之指向新的函数

2431202505 发表于 2014-3-22 18:05:28

朋友你说的我看不懂啊,什么叫子类包含一个无名的。。。。。。。。。。。。,我不知道你回答了我的问题没有,我又没问虚函数,子类会包含一个父类的什么变量啊,我没学过无名变量是怎么回事啊,我觉得我的问题还是不解啊,我问的是子类初始化后给他继承下来的变量赋值,然后创建父类的对象,那么父类中被子类继承下来的变量会是什么啊

2431202505 发表于 2014-3-22 18:06:37

我想问下你的qq号,能加下问问么,这样方便,那就太感谢了版主

聆听丨灬六月 发表于 2014-5-15 10:58:58

不知道啊,嘿嘿
页: [1]
查看完整版本: c++方法的覆盖