两个无干类的虚函数地址相同
两个无关类的虚函数地址相同?
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 解释的很清楚,就是相对(地址)偏移
------解决方案--------------------
++
------解决方案--------------------
+++
------解决方案--------------------
第一句足以很好地回答问题,后面讲得太多了。
涉及到实现,就没有什么答案而言了,最重要的是容易误人子弟。
------解决方案--------------------
如#9所说,实现层面上没有统一的标准,有的编译器实现为虚表的偏移,有的可能是一段机器码的地址~研究其值没有多大的意义。
------解决方案--------------------

你看反汇编结果
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 解释的很清楚,就是相对(地址)偏移
------解决方案--------------------
++
------解决方案--------------------
+++
------解决方案--------------------
第一句足以很好地回答问题,后面讲得太多了。
涉及到实现,就没有什么答案而言了,最重要的是容易误人子弟。
------解决方案--------------------
如#9所说,实现层面上没有统一的标准,有的编译器实现为虚表的偏移,有的可能是一段机器码的地址~研究其值没有多大的意义。
------解决方案--------------------
你看反汇编结果