问题 单项选择题

若有以下程序:
#include <iostream>
using namespace std;
class Base

private:
int a,b;
public:
Base(int x, int y)

a=x;
b=y;

void disp ()

cout<<a<<" "<<b<<end1;

;
class Derived : public Base

private:
int c;
int d;
public:
Derived(int x,int y, int z,int m) :Base(x,y)

c=z;
d=m;

void disp ()

cout<<c<<" "<<d<<end1;

;
int main()

Base b(5,5),*pb;
Derived obj(1,2,3,4);
pb=&obj;
pb->disp();
return 0;

执行程序后的输出结果是( )。

A.1,2

B.3,4

C.2,3

D.5,5

答案

参考答案:A

解析: 本题考核基类指针的使用。本题首先定义了一个基类Base和一个由Base派生出来的派生类Derived。在主函数中,定义了一个基类Base指针pb和基类对象 b,还定义了派生类Derived的对象obj。然后将派生类对象obj的地址赋值给指向基类Base的指针pb。由于Derived是Base的子类型,因此允许上述赋值,但这时指针pb只能使用从基类Base继承的成员,即当pb指向obj对象时,pb->disp还是调用基类Base的成员函数disp。所以程序最后输出的对象d中对基类成员的初始化值,即1,2。

单项选择题
多项选择题