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

admin2017-07-28  38

问题 已知类XX中声明了如下的公有虚函数:
virtual voidf()const;
XX的派生类YY重定义了这个虚函数,XX和YY都有默认的构造函数,且有如下定义:
YY YY:
XX xx,*px=&xx,&rx=Yyy,*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/VUAp777K
0

最新回复(0)