问题 填空题

用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了多个类,其中定义的类并不完整,按照要求完成下列操作,将类的定义补充完整;使其输出如下:
TC2
TC3
TC1
(1)类TC2公共继承于TC1,请在注释1后添加适当的语句。
(2)print函数为虚函数,请在注释2后添加适当的语句。
(3)修改语句,使得p指定对象obj3,请在注释3后添加适当的语句。
(4)修改语句,利用P调用print函数,完成输出信息,在注释4后添加适当的语句。
注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。
试题程序:
#include<iostream>
using namespace std;
class TC1

public:
void print()

cout<<"TC1"<<end1;


//********1********
class TC2

public:
//********2********
void print()

cout<<"TC2"<<end1;


class TC3:public TC2

public:
void print()

cout<<"TC3"<<end1;


int main()

TC2 obj2;
TC3 obj3;
TC1 *p;
obj2.print();
obj3.print();
//********3********
p=obj3;
/********4********
p.print();
return 0;

答案

参考答案:将“p.print();”修改为“p—>print();”。

解析: 本题中第1处要求“类TC2公共继承于TC1”。从已有的类产生一个新的子类,成为类的派生。声明派生类的一般形式为“class派生类名:[继承方式]基类名”。根据题目中的要求以及派生类的一般形式,在第1处添加语句“class TC2:public TC1”。第2处要求“print函数为虚函数”。在C++中,用virtual声明的函数为虚函数,因此第2处的语句应修改为“virtual void print()”。第3处要求“使得P指定对象obj3”。p为指针变量,obj3为类的对象,将一个指针变量指向另一个变量,只要把被指向的变量的地址赋给指针变量即可。取对象obj3地址的语句为&obj3,所以这里补全语句为“p=&obj3;”。第4处要求“利用p调用print()函数”。C++中用“—>”运算符实现成员访问,因此调用print函数,应将第4处的语句修改为“p—>print();”。

单项选择题
单项选择题