问题 问答题

使用VC6打开考生文件夹下的工程MyProj14。此工程包含一个源程序文件MyMain14.cpp,程序中定义了3个类A、B和C,但类的定义并不完整。
请按要求完成下列操作,将类的定义补充完成:
①类A的成员函数set x(int i,int j)是虚函数,其实现的功能是将类A的保护成员x和y分别设置成i和j并且y具有默认值0。请在注释“//* *1* * ”之后添加适当的语句。
②将类A的成员函数print()声明成员纯虚函数。请在注释“//* *2* *”之后添加适当的语句。
③完成类A的保护数据成员x和y的定义,它们都是整型变量。请在注释“//* *3* *”之后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件MyMain14.cpp清单如下:
//MyMain14. cpp
#include <iostream>
using namespace std;
class A

public:
//* * * 1 * * *
//* * * 2 * * *
protected:
//* * * 3 * * *
;
class B : public A

public:
void print ()

cout<<x * x<<" , ";

;
class C : public A

public:
void print ()

cout <<x* x * x<<end1;

;
int main ()

A *pa;
B b;
C c;
pa=&b;
pa->setx (5);
pa->print ();
pa=&c;
pa->setx (2);
pa->print ();
return 0;

答案

参考答案:

①virtual void setx(int i,int j=0){x=i;y=j;}

②virtual void print=0;

③int x,y;

解析:

该程序中定义了A类、B类和C类共3个类。其中,类A是抽象类,它的类体内有一个纯虚函数print()。抽象类不可以定义对象,但可以定义指向对象的指针。类B和类C都是类A的公有派生类,这些类是具体类,它们对A类中纯虚函数都有不同的实现。该程序的主函数中,定义一个指向类A对象的指针pa,又定义了类B和类C的2个对象,并使指针pa分别指向这些对象。这里,采用动态联编,在运行时选择print()函数。

单项选择题
单项选择题