问什么C++中基类虚函数和派生类虚函数的地址相同,执行结果不同?该如何处理

问什么C++中基类虚函数和派生类虚函数的地址相同,执行结果不同??
程序如下:
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;

class A{
public:
virtual void output(){cout<<"this is class A"<<endl;}
};

class B:public A
{
public:
void output(){cout<<"this is class B"<<endl;}
};

int main()
{
A a1;
B b1;
a1.output();
b1.output();

printf("A中output()函数的地址是:%p\n", &A::output);
printf("B中output()函数的地址是:%p\n",&B::output);
system("pause");

return 0;
}

输出是:
this is class A
this is class B
A中output()函数的地址是:00411299
B中output()函数的地址是:00411299

可以看出他们的地址是相同的,但是执行的结果为什么不同?

------解决方案--------------------
A::`vcall'{0}' ,其中的0是虚拟函数的序号,第一个是0、第二个是4,这个函数是用于转向虚似函数的,啥时用还不清楚。
------解决方案--------------------
&A::output这个如果就是函数地址,
成员函数指针还需要2字节?
GCC里面:
普通成员函数的指针前1字节为函数地址,后1字节为0;
虚函数地址在虚函数表里面,指针第一字节为函数地址在虚表中的索引,后一字节是this指针偏移;