只存在于派生类中的虚函数问题
class a
{
public:
virtual void f1();
virtual void f2();
}
class b:public a
{
public:
virtual void f1();
virtual void f3();
}
为什么在b的虚函数表里面看不到f3呢
VC6.0下的。。
[解决办法]
你是怎么实例化b的,肯定是有的才对,要b instB;或者a *pB = new b();
还有一种情况就是你位置找错了吧。
[解决办法]
不要用vc6了。。。
[解决办法]
A *pa=&a;
B & bref=b;
B *pb =&b;
typedef void (A::*Afun)();
typedef void(B::*Bfun)();
Afun af =a.print ;
Bfun bf =b.print ;
(pa->*af)();
(pb->*bf)();
//模拟调用虚函数,也许只对VC有用。
__asm pushA
__asm lea ecx,a
__asm mov ebx,DWORD PTR [ecx]
__asm call [ebx];
__asm lea ecx,b
__asm mov ebx,DWORD PTR [ecx]
__asm call [ebx];
__asm mov ecx,pb
__asm mov ebx,DWORD PTR [ecx]
__asm add ebx,4
__asm call [ebx];
__asm popA
cin.get();
return 0;
}
输出:
4
print() class A
4
print() class B
4
print() class A
4
print() class B
4
show() class B