博客已迁移至:http://kulv.sinaapp.com/
关于基类构造函数调用虚函数实际调用的不是派生类的问题的原因
我们知道,类的构造函数里面编译器插入了很多代码,比如异常安全,虚函数表指针的设置,基类构造,等等。
而且,关键是这些代码时在任何用户的代码(非初始化)的地方之前插入的,问题就来了···
如果在基类构造函数里面调用基类的虚函数,那么,实际调用的却不像我们当初认为的多态效果,为什么呢?
下面看看编译怎么实现的就知道了····
下面是测试类:
原因:
上面没有访问虚函数表,是因为编译器优化了一下,如果我们的A类构造函数是这样的,那么···
本文通过实例剖析了在基类构造函数中调用虚函数时为何实际上调用的不是派生类的虚函数。深入解释了编译器如何处理虚函数表指针的设置过程,揭示了构造函数调用顺序及虚函数表初始化机制。
1181

被折叠的 条评论
为什么被折叠?



