频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

C++的iostream标准库介绍

来源: 作者: 出处:巧巧读书 2007-12-12 进入讨论组
上一页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 下一页 

  先说左移(<<)操作符,也就是我们常说的输出操作符。

  对于自定义类来说,重载左移操作符的方法我们常使用类的友元方式进行操作。

  示例代码如下:

//程序作者:管宁 
//站点:www.cndev-lab.com 
//所有稿件均有版权,如要转载,请务必著名出处和作者 
 
#include<iostream> 
usingnamespacestd; 
 
classTest 
{ 
   public: 
     Test(intage=0,char*name="") 
     { 
       Test::age=age; 
       strcpy(Test::name,name); 
     } 
     voidoutmembers(ostream&out) 
     { 
       out<<"Age:"<<age<<endl<<"Name:"<<this->name<<endl; 
     } 
     friendostream&operator<<(ostream&,Test&); 
   protected: 
     intage; 
     charname[50]; 
}; 
ostream&operator<<(ostream&out,Test&temp) 
{ 
   temp.outmembers(out); 
   returnout; 
} 
intmain()  
{ 
   Testa(24,"管宁"); 
   cout<<a; 
   system("pause"); 
}

  上例代码中,我们对void outmembers(ostream &out)的参数使用ostream定义主要是为了可以向它传递任何ostream类对象不光是cout也可以是ofstrem或者是ostrstream和ostringstream类对象,做到通用性。

  重载运算符,我们知道可以是非成员方式也可以是成员方式的,对于<<来说同样也可以是成员方式,但我十分不推荐这么做,因为对于类的成员函数来说,第一个参数始终是会被隐藏的,而且一定是当前类类型的。

  下面的示例代码就是将上面的<<重载函数修改成成员方式的做法:

//程序作者:管宁 
//站点:www.cndev-lab.com 
//所有稿件均有版权,如要转载,请务必著名出处和作者 
 
#include<iostream> 
usingnamespacestd; 
 
classTest 
{ 
   public: 
     Test(intage=0,char*name="") 
     { 
       Test::age=age; 
       strcpy(Test::name,name); 
     } 
     voidoutmembers(ostream&out) 
     { 
       out<<"Age:"<<age<<endl<<"Name:"<<this->name<<endl; 
     } 
     ostream&operator<<(ostream&out) 
     { 
       this->outmembers(out); 
       returnout; 
     } 
   protected: 
     intage; 
     charname[50]; 
}; 
intmain()  
{ 
   Testa(24,"管宁"); 
   a<<cout; 
   system("pause"); 
}

  从代码实现上,我们将函数修改成了ostream& operator <<(ostream &out),迫不得已将ostream类型的引用参数放到了后面,这是因为,成员方式运算符重载函数第一个参数会被隐藏,而且一定是当前类类型的,这和ostream类型冲突了。由此我们在使用cout输出的时候就必须写成a<<cout;,这样一来代码的可读行就大大降低了,这到底是左移还是右移呢?为此我再一次说明,对于左移和右移运算符的重载是十分不推荐使用成员函数的方式编写的。

转载保留:http://www.qqread.com/cpp/p351499.html 更多文章 更多内容请看C/C++技术专题专题,或进入讨论组讨论。
上一页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 下一页 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章