虚函数的调用准则是对象指针指向哪个类的对象实例则执行哪个类的虚函数。例如:
#include
<
iostream
>
using
namespace
std;
class
A {
public
:
void
virtual
f()
{
cout
<<
"
A
"
<<
endl;
}
};
class
B:
public
A {
public
:
void
virtual
f()
{
cout
<<
"
B
"
<<
endl;
}
};
int
main()
{
A
*
pa
=
new
A(); //pa指向类A的对象实例
pa
->
f();
B
*
pb
=
(B
*
)pa; //pb也是指向类A的对象实例
pb
->
f();
pa
=
new
B(); //pa指向类B的对象实例
pa
->
f();
pb
=
(B
*
)pa; //pb也是指向类B的对象实例
pb
->
f();
return
0
;
}
输出为“AABB”