如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。有如下程序,没有使用多态机制。 #include<iostream> using namespace std; class Base{ int a,b; publi

admin2020-11-11  53

问题 如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。有如下程序,没有使用多态机制。
#include<iostream>
using namespace std;
class Base{
int a,b;
public:
Base(int x,int y){a=x;b=y;}
void show(){cout<<a<<’,’<<b<<9ndl;}
};
class Derived:public Base{
int c,d;
public:
Derived(int x,int y,int z,int m):Base(x,y){c=z;d=m;}
void show(){cout<<c<<’,’<<d<<endl;}
};
int main()
{
Base B1(50,50),*pb;
Derived D1(10,20,30,40);
pb=&D1;
return 0:
return();
}
运行时输出的结果是(    )。

选项 A、10,20
B、30,40
C、20,30
D、50,50

答案A

解析 此题考查的是多态性。在C++中,一个基类指针可以用于指向它的派生类对象,而且通过这样的指针调用虚函数时,被调用的是该指针实际所指向的对象类的那个重定义版本。在实函数的情况下。通过基类指针所调用的只能是基类酌那个函数版本,无法调用到派生类中重定义函数。此题中,通过指针pb所调用的是基类的版本,即输出a和b的值10,20。
转载请注明原文地址:https://jikaoti.com/ti/y7l0FFFM
0

最新回复(0)