虚拟函数的地址?
我用一个成员函数的指针,去指向一个虚拟成员函数。
但在调试的时候,却发现 赋值以后,这个值并不和 虚拟函数表中的地址一样,那是为什么?
如 :
class A{
public:
virtual void test(){ cout<<"A::test()"<<endl;}
vittual void test2(){ cout<<"A::test2()"<<endl;
};
void main()
{
A *a = new A ;
(A::*p)() = a->test;
// 赋值以后,p 的值 和 调试的一个对话框中 看到的 a 中虚拟函数表中的函数
// 的地址 不一样
int i = **(int **) a;
// 我是通过这种方式得到A 中第一个虚函数的地址的,这和调试对话框中看到的
// 值是相等的. 我这样对不对?
}
请多指教