已知类XX中声明了如下的公有虚函数: virtualvoid f()eonst; XX的派生类YY重定义了这个虚函数,XX和YY都有默认的构造函数,且有如下定义: YY YY: XX XX,*px=&xx,&rx=yy,*p

admin2021-06-10  27

问题 已知类XX中声明了如下的公有虚函数:
    virtualvoid f()eonst;
    XX的派生类YY重定义了这个虚函数,XX和YY都有默认的构造函数,且有如下定义:
    YY YY:
    XX XX,*px=&xx,&rx=yy,*pp=&yy;
    则下列对函数f的调用中,属于非多态调用的是(    )。

选项 A、px->f()
B、rx.f()
C、xx.f()
D、pp->f()

答案C

解析 C++中,多态调用必须满足两个条件:被调用的成员函数是虚函数;必须通过基类类型的引用或指针进行函数调用。题意中f()函数是虚函数,满足条件之一,所以只需要看调用对象是引用或指针。px是xx类型的指针,通过px调用f()函数,满足多态性,选项A正确;rx是XX类型的引用,通过rx调用f()函数,满足多态性,选项B正确;pp是。XX类型的指针,通过pp调用f()函数,满足多态性,选项D正确;xx是:XX类型的对象,通过Xx调用f()函数,不满足多态性,选项C错误;本题答案为C选项。
转载请注明原文地址:https://kaotiyun.com/show/Ywfp777K
0

相关试题推荐
最新回复(0)