C++ 与C的一些知识

来源:互联网 发布:2009流行网络歌曲500首 编辑:程序博客网 时间:2024/04/30 14:25

cout >> 其中的cou 是outstream 类的一个对象 ,而 >> 是这个类的运算符重载,

嗯,我们已经基本上看出了cout的实质,不妨动动手,自己来实现一个cout的简化版(Lite),为了区分,我们把我们设计的cout对象命名的myout,myout对象所属的类为MyOutstream。我们要做的就是为MyOutstream类重载一系列不同类型的operator<<运算符函数,简单起见,这里我们仅实现了对整型(int)与字符串型(char*)的重载。为了表示与iostream断绝关系,我们不再用头文件iostream,而使用古老的stdio中的printf函数进行输出,程序很简单,包括完整的main函数,均列如下:
#include//在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;
}
我们定义的myout已经初具形态,可以为我们工作了。程序中的注释指出两处要我们特别注意的:即是operator<<函数执行完毕之后,总是返回一个它本身的引用,输出已经完成,为何还要多此一举?
还记得那个有点奇异的cout.operator<<("Hello,World!").operator<<(endl)么?它能实现意味着我们可以连着书写
cout<<"Hello,World!"<<endl;
而不是
cout<<"Hello,World!";
cout<<endl;


iostream.h  与iostream

iostream 是标准c++的头文件,它引入了命名空间的概念,为了与以前的c头文件有区别,采用了不以.h 结尾的头文件方式,iostream.h 是以前的头文件方式

而使用include <cstring> 这是c++为了兼容c的头文件方式 ,实际与string.h 是一样的 而<string> 则是c++的string 类

0 0
原创粉丝点击