问答题 使用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 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=”<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= ”<
【答案解析】解析:程序中定义了类CBase、CDerive和CDerive2,CDerive和CDerive2公有派生于类CBase,CDerive和CDerive2均有成员函数display(),用于输出。函数func(CBase*obj)的参数为CBase对象指针,在函数体内通过该指针调用其display()函数。