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

基类的信息保存在哪儿呢?解决方法

2012-02-04 
基类的信息保存在哪儿呢?看深度探索c++对象模型又有个问题不懂。在166页说道:当子类调用父类中的虚函数时,p

基类的信息保存在哪儿呢?
看   深度探索c++对象模型  

又有个问题不懂。在166页

说道:   当子类调用父类中的虚函数时,pder必须被向前调整sizeof(Base1)   个bytes

Derived   *pder   =   new   Derived;

pder-> mumble();//pder必须被向前调整sizeof(Base1)   个bytes

上面mumble()是基类Base1中定义的虚函数,Derived中没有改写。

调整的时候,怎么知道base1   的信息呢?

子类的信息可以在vtale中的第一个slot中表示,那么基类的又在哪儿呢?运行时如何知道?


[解决办法]
再继续看。估计你在前看后忘。
[解决办法]
首先,你说 "上面mumble()是基类Base1中定义的虚函数... ",这应该纠正,原书166页上的程序注释很清楚是 "//调用Base2::munble() "!如果是第一个Base1,那就不必修正sizeof(Base1)个btye了!

其次你所说的基类信息,确切的说应该是基类Base的首地址,关于这点书中已经说得很清楚,不同的编译器有细微差别的策略,其中列举了Sun、IBM以及Microsoft三种编译器的具体策略,就在167页。

热点排行