使用VC6打开考生文件夹下的工程test37_3。此工程包含一个test37_3.cpp,其中定义了类Letter和Numbe

13 查阅

使用VC6打开考生文件夹下的工程test37_3。此工程包含一个test37_3.cpp,其中定义了类Letter和Number以及Grid,其中Grid类由Letter类和Number类public派生,但三个类的定义并不完整。请按要求完成下列操作,将程序补充完整。

(1)添加类Letter的带一个参数c的构造函数,c是char型的数据,默认值为'A',该函数把参数c的值赋给类的保护成员ch,请在注释“//**1**”之后添加适当的语句。

(2)添加类Number的带一个参数n的构造函数,n是int型的数据,默认值为0,该函数把参数n的值赋给类的保护成员num,请在注释“//**2**”之后添加适当的语句。

(3)添加派生类Grid构造函数的定义,传入的参数为char型的c和血型的n,并将其分别赋值给基类的ch和num,请在注释“//**3**”之后添加适当的语句。

(4)完成派生类Grid的友元函数——“<<”运算符重载的定义,使其以格式“[g.ch,g.num]”输出,请在注释“//**4 **”之后添加适当的语句。

源程序文件test37_3.cpp清单如下:

include<iost ream. h>

class Letter

{

protected:

char ch;

public:

// ** 1 **

};

class Number

{

protected:

int num;

public:

// ** 2 **

};

class Grid : public Letter, public Number

{

public:

// ** 3 **

friend ostream& operator<<(ostream &o,Grid &g);

};

// ** 4 **

{

o << "[" << g.ch << ", "<< g.num << "]";

return o;

}

int main ( )

{

Grid g('C', 3);

cout << "Grid reference: "<< g << end1;

return 0;

}

参考答案:

(1) Letter(char c='A'){ch=c;}(2) Number(int n=0){num=n;}(3) Grid(char c='A'int n=0):Letter(c)Number(n){}(4) ostream &operator(ostream &oGrid &g)(1) Letter(char c='A'){ch=c;}(2) Number(int n=0){num=n;}(3) Grid(char c='A',i

计算机二级