学堂在线《面向对象程序设计》第四章唯一的一道编程题,调试了两天,依然没有一点眉目。题目如下:
在程序中输出一些信息,是一种很有效的调试方法。请设计实现一个名为Log的类,能方便输出调试信息,要求满足如下附件所写的要求:
简单罗列一下,解这道题需要的知识点:
1,流对象更名:从ostream输出流类的cout对象,改名为Log类的obj对象,同样要具有输出流对象的功能;
2,流插入运算符 << 重载;
3,也是最难的一点:将level(string)设置成能控制后面的流插入操作是否执行的控制符(可是iostream头文件中没有哪个控制符有这个功能)。
知识点2在mooc视频中徐明星老师已经讲过了;知识点1在百度百科cout词条下发现一个代码样例:
#include <cstdio> // 在C和一些古老的C++中是stdio.h,新标准为了使标准库
// 的头文件与用户头文件区别开,均推荐使用不用扩展名
// 的版本,对于原有C库,不用扩展名时头文件名前面要加c
class MyOutstream
{
public:
const MyOutstream& operator << (int value)const;//对整型变量的重载
const MyOutstream& operator << (char* str)const;//对字符串型的重载
};
const MyOutstream& MyOutstream::operator <<(int value)const
{
printf("%d",value);
return* this;//注意这个返回……
}
const MyOutstream& MyOutstream::operator <<(char* str)const
{
printf("%s",str);
return* this;//同样,这里也留意一下……
}
MyOutstream myout;//随时随地为我们服务的全局对象myout
int main()
{
int a=2003;
char* myStr="Hello,World!";
myout << myStr << "\n";
return 0;
}
知识点3调了两天,依然毫无进展。