两个无干类的虚函数地址相同

两个无关类的虚函数地址相同?

class A
{
public:
virtual void funA(){};
};

class B
{
public:
virtual void funB(){}
};

int _tmain(int argc, _TCHAR* argv[])
{
printf("%x,%x",&A::funA,&B::funB);
return 0;
}
输出的 &A::funA, &B::funB 的地址怎么是一样的呢?
------解决方案--------------------
#3 解释的很清楚,就是相对(地址)偏移
------解决方案--------------------
引用:
 &A::funA, &B::funB  表示的成员函数指针。
因为是虚函数,所以该值表示的是这两个函数在各自所在类的虚函数表中的偏移值。
楼主可以搜说一下成员指针的用法。


++
------解决方案--------------------
引用:
 &A::funA, &B::funB  表示的成员函数指针。
因为是虚函数,所以该值表示的是这两个函数在各自所在类的虚函数表中的偏移值。
楼主可以搜说一下成员指针的用法。

+++
------解决方案--------------------
第一句足以很好地回答问题,后面讲得太多了。
涉及到实现,就没有什么答案而言了,最重要的是容易误人子弟。

引用:
 &A::funA, &B::funB  表示的成员函数指针。
因为是虚函数,所以该值表示的是这两个函数在各自所在类的虚函数表中的偏移值。
楼主可以搜说一下成员指针的用法。

------解决方案--------------------
 如#9所说,实现层面上没有统一的标准,有的编译器实现为虚表的偏移,有的可能是一段机器码的地址~研究其值没有多大的意义。
------解决方案--------------------
两个无干类的虚函数地址相同
你看反汇编结果