关于c++中虚函数机制?
书上说虚函数是通过虚表来实现的,在继承中,子类重写的虚函数会覆盖子类虚表中父类虚函数的地址,我有一个问题,如果父类虚函数地址被覆盖了,那么我在子类虚函数中显示调用父类的该虚函数,那么编译器如何知道父类虚函数的地址呢?还是说子类本身还在其他地方存放父类虚函数的信息?
例如:
class A
{
public:
virtual void fun()
{
}
};
class B:public A
{
public:
virtual void fun()
{
A::fun();
}
};
此时B是如何定位A中fun()的地址呢?
[解决办法]
虚函数机制是针对在类指针和类引用的,你这个A::fun();并没有使用虚函数机制,他和普通调用一样的。
[解决办法]
编译后直接把A::fun();的地址写死了,调用时直接调用 0x********这个地址就好了