下列程序的运行结果是【 】。 #include<iostream, h> class Base { public: void f(int x) {cout<<"Base:"<<x<<end1;}

admin2010-06-06  19

问题 下列程序的运行结果是【 】。
      #include<iostream, h>
     class Base
     {
     public:
         void f(int x) {cout<<"Base:"<<x<<end1;}
     };   
     class Derived: public Base
     {
     public:
          void f(char * str) {cout<<"Derived:"<<str<<end1;}
     };   
     void main(void)
     {
           Base * pd=new Base;
           pd=new Derived;
           pd->f(’a’)
     }

选项

答案Base:97

解析 本题主要考察两个知识点,一是基类指针可以指向派生类对象,并可以访问派生类的所有成员。二是在函数重载牛进行隐式类型转换.如pd->f(’a’);系统到底调用哪个重载函数呢?实参即不是派生类中的形参,也不是基类中f函数的形参类型。此时系统根据就近原则和从高优先级到低优先级的规则尝试隐式转换。单字符更接近整数,故调用的是基类的f函数。
转载请注明原文地址:https://kaotiyun.com/show/fyjp777K
0

最新回复(0)