问答题 请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,此工程包含有一个源程序文件proj2.cpp。其中定义了Basel类、Base2类和Derived类。 Basel是一个抽象类,其类体中声明了纯虚函数Show。Base2类的构造函数负责动态分配一个字符数组,并将形参指向的字符串复制到该数组中,复制功能要求通过调用strcpy函数来实现。Derived类以公有继承方式继承Basel类,以私有继承方式继承Base2类。在Derived类的构造函数的成员初始化列表中调用Base类的构造函数。 请在程序中的横线处填写适当的代码,然后删除横线,以完成Base1、Base2和Derived类的功能。此程序的正确输出结果应为: I'm a derived class. 注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。//proj2,cpp#include<iostream>#include<cstring>using namespace std;class Basel{public://**********found**********下列语句需要声明纯虚函数Show_________; }, clasS Base2{ protected: char*p; Base2(const char*s) { _P=new char[strlen(s)+1];//**********found********下列语句将形参指向的字符串常量复制到该类的字符数组中_____;}一Base2(){delete[]_P;} }; //********found********Derived类 公有继承Base1,私有继承Base2类 class Derived:______{ public: //*******found********以下构造函数 调用Base2类构造函数Derived(const char*s):____{ }void Show(){cout<<_p<<endl;}};int main(){Base1*pb=new Derived("I’m a derived class.”); pb->Show(); delete pb; return 0;}
【正确答案】正确答案:(I)virtual void Show()=0 (2)strcpy(_p,S) (3)public Basel,private Base2 (4)Base2(S)
【答案解析】解析:(1)主要考查的是纯虚函数的定义。题目要求声明纯虚函数Show,因此首先看Base1类的派生类Derived类中Show函数的定义: void Show() {cout<<_p<