问题 问答题


试题源程序文件清单如下:
//number. cpp
#include "Number. h"
#include<iostream>
#include<iomanip>
#include<strstream>
using namespace std;
char Number::buf[33]="";
const char* HexNumber::toString() const
strstream str(buf,33);
str<<hex<<uppercase<<showbase<<n<<ends;
return buf;

const char * OctNumber::toString() const
strstream str(buf,33);
str<<oct<<showbase<<n<<ends;
return huf;

const char * DecNumber::toString() const
strstream str(buf,33);
str<<dec<<n<<ends;
return buf;

//proj2. cpp
#include"Number. h"
#include<iostream>
using namespace std;
void show(Number& number)
//**********found**********
____________; //按既定的数制显示输出参数对象number的值

int main()
show(OctNumber(11));cout<<’,’;
show(DecNumber(11));cout<<’,’;
//**********found**********
________________________; //以十六进制格式输出十进制数11
cout<<endl;
return 0:

答案

参考答案:

解析:
number.h:
第一处“//**********found**********”下定义纯虚函数toString(),根据其声明格式可得横线处代码。
第二处“//**********found**********”下完成HexNumber类的构造函数,需要用列表的方式初始化从基类继承的数据int n。
proj2.cpp:
第一处“//**********found**********”下要求按既定的数制显示输出参数对象number的值,实际上该函数的形参中定义有基类Number的引用number,在调用show()函数时只要实参是派生类对象,就能实现纯虚函数toString的重载,正如主函数的使用情况一样。
第二处“//**********found**********”要求以十六进制格式输出十进制数11,只需使用show()函数,并用十进制数11初始化一个HexNumber对象作为实参即可。

选择题
多项选择题