使用VC6打开考生文件夹下的源程序文件modi3.cpp。此程序的运行结果为:
In CDerive's display().b=1
In CDerive2’s display().b=2
其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。
(1)定义函数display()为无值型纯虚函数。请在注释∥********1********之后添加适当的语句。
(2)建立类CDerive的构造函数,请在注释∥********2********之后添加适当的语句。
(3)完成类CDerive2成员函数diaplay0的定义。请在注释∥********3********之后添加适当的语句。
(4)定义类Derivel的对象指针d1,类CDerive2的对象指针d2。其初始化值分别为1和2。请在注释∥********4********之后添加适当的语句。
注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。
#include<iOStream>
using namespace std;
Class CBase
{
public:
CBase(int i){b=i;)
∥********1********
protected:
int b;
};
class CDerive:public CBase
{
public:
∥********2********
void di splay()
{
cout<<“In CDerive’s
display().“<<”b=”<<b<<endl;
}
};
class CDerive2:public CBase
{
public:
CDerive2(int i):CBaSe(i){}
∥********3********
};
void func(CBase*obj)
{
obj一>di splay();
}
void main()
{
∥********4********
func(d1);
func(d2);
}
【正确答案】(1)添加语句:vi rtual Void di splay()=0 ;
(2)添加语句:CDerive(i nt i):CBa se(i){}
(3)添加语句:void display(){cout<<‘’In CDerive2’S di spl ay().“<<” b=
”<<b<<endl; )
(4)添加语句: CDe rire *d1=new CDerive(1); CDerive2 *d2= newCDerive2(2);
【答案解析】程序中定义了类CBase、CDerive和CDerive2,CDerive和CDerive2公有派生于类CBase,CDerive和CDerive2均有成员函数display(),用于输出。函数func(CBase*obj)的参数为CBase对象指针,在函数体内通过该指针调用其display()函数。