有如下程序: #include<iostream> using namespace std; class Vehicle{ public: virtual int wheels()const{return0;} }; class Car:public Ve

admin2020-06-29  21

问题 有如下程序:
#include<iostream>
using namespace std;
class Vehicle{
public:
virtual int wheels()const{return0;}
};
class Car:public Vehicle{
public:
int wheels()const{return4;}
};
void f1(Vehicle v){cout<<v.wheels()<<’ ’;}
void f2(Vehicle &V){cout<<v.wheels()<<’ ’;}
void f3(Vehicle*pv){cout<<pv->wheels()<<’ ’;}
int main(){
Car c;
f1(c);f2(c);f3;(&c);
return0;
}
运行后的输出结果是(    )。

选项 A、4 4 4
B、0 4 4
C、4 0 4
D、4 4 0

答案B

解析 C++中,成员函数调用要触发多态需要满足两个条件:
①被调用的成员函数必须是虚成员函数。
②必须通过基类类型的引用或指针进行函数调用。
题意中,main()函数首先构造Car对象c,然后将对象c传给三个函数f1()、f2()和f3(),其中f1()的参数是基类类型对象,函数体中调用的是基类的成员函数,输出0;f2()的参数是基类类型对象的引用,函数体中调用的类成员函数是虚函数,满足多态条件,输出4;f3()的参数是基类类型对象的指针,函数体中调用的类成员函数是虚函数,满足多态条件,输出4。故本题答案为B选项。
转载请注明原文地址:https://kaotiyun.com/show/2K8p777K
0

最新回复(0)