使用VC6打开考生文件夹下的工程test24_3,此工程包含一个源程序文件test24_3.cpp,其中定义了抽象类point和它的派生类line,但它们的定义并不完整。请按要求完成下列操作,将程序补充完整。 (1)定义类point的构造函数,函数含参数i和j它们都是int型数据,默认值都是0,用i和j分别将point的数据成员x0和y0初始化。请在注释“//**1**”之后添加适当的语句。 (2)完成类point的成员函数纯虚函数void set()和void draw()的定义,请在注释“//**2**”之后添加适当的语句。 (3)添加类line的构造函数,函数含参数i,j,m和n,它们都是int型数据,默认值都是0,用i和j分别将point的数据成员x0和y0初始化。请在注释“//**3**”之后添加适当的语句。输出结果如下: line::set()called. 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 源程序文件test24_3.cpp清单如下: #include<iostream.h>class point { public: //**1**//**2**protected:int xO,yO; } class line: public point { public://**3**{ x1=m; y1=n;}void set(){ cout<<"line::set() called.\n"; }void draw(){ cout<<"line::draw() called.\n"; } protected:int x1,y1; }; void main(){ line *lineobj = new line; 1ineobj->set(); }
参考答案:
解析:(1) point(int i=O,int j=0){x0=i;y0=j;} (2) virtual void set()=0; virtual void draw()=0; (3) line(int i=O,int j=0,int m=0,int n=0):point(i,j)本题主要考查考生对于纯虚函数和抽象类以及派生类构造函数的使用,注意(2)中纯虚函数的定义格式。纯虚函数是一种特殊的函数,不是在基类中实现,而是在派牛类中实现,说明格式是在函数声明中加入关键字“virtual”和“=0”。如:virtual void set()=0;。而带有纯虚函数的类就是抽象类,它是不能定义对象的,只是一个公共的类。