已知类Base、Middle和Derived的定义如下
已知类Base、Middle和Derived的定义如下:
class Base {
public :
virtual void foo ( ) { cout << 'a'; }
} ;
class Middle : public Base {
public :
void foo ( ) { cout << 'b'; }
} ;
class Derived : public Middle {
public :
void foo ( ) { cout << 'c'; }
} ;且有如下程序段:
Base * p1; Middle * p2; Derived d; p1 = &d; p1 -> foo( ); p2 = &d; p2 -> foo( );
运行这个程序段的输出是( )。
答案
C
解析
p1=&d和p2=&d中p1和p2都是读取d的地址,d是Derived类的对象,所以 两次执行的函数都是void foo() cout<<‘c’; ,两次输出的内容都是c。