写出以下程序的输出结果:
#include class A
5

{
virtual void g()
{
cout << "A::g" << endl;
} private:
virtual void f() {
cout << "A::f" << endl; }
};
class B : public A {
void g() {
cout << "B::g" << endl; }
virtual void h() {
cout << "B::h" << endl; }
};
typedef void( *Fun )( void ); void main()
{
B b;
Fun pFun;
for(int i = 0 ; i < 3; i++) {
pFun = ( Fun )*( ( int* ) * ( int* )( &b ) + i );
pFun(); }
}
输出结果:
注意:本题主要考察了面试者对虚函数的理解程度。一个对虚函数不了解的人很难正确的做出本题。 在学习面向对象的多态性时一定要深刻理解虚函数表的工作原理。
评论列表
文章目录