问题
填空题
下列程序的运行结果是______。
#include<iostream.h>
class Base
public:
void f(int x)cout<<“Base:”<<x<<endl;
);
class Derived:public Base
public:
void f(char*str)cout<<“Derived:”<<str<<endl;
;
void main(void)
Base*pd=new Base;
pd=new Derived;
pd->f(‘a’);
答案
参考答案:Base:97。
解析: 本题主要考查两个知识点,一是基类指针可以指向派生类对象,并可以访问派生类的所有成员。二是在函数重载中进行隐式类型转换。如pd->f(‘a’);系统到底调用哪个重载函数呢实参既不是派生类中的形参,也不是基类中f函数的形参类型。此时系统根据就近原则和从高优先级到低优先级的规则尝试隐式转换。单字符更接近整数,故调用的是基类的f函数。