您的位置:首页 > 编程语言 > C语言/C++

C++中输入输出流运算符的重载

2016-04-29 16:00 302 查看
cout是ostream类的对象,cin是istream类的对象。
  我们平时用的cout<<就相当于cout.operator<<(...)。也就是说正常使用(不对operator<<进行函数重载,我们用的都是ostream类库中本身定义好了函数

  而当我们需要对cout<<进行重载时,比如我们定义了一个类Student,他的一个对象s1,我们想要cout<<s1,这时<<的意义就改变了,由于ostream类库中已经定义好的成员函数我们是不能改写的,因此我们只能将<<重载成一个全局函数

  ex:

ostream& operator<<(ostream& co,const Student& s) {
co<<s.sname<<endl;
return co;
}


  关于这个函数,有两点值得思考:

  (1)它的返回值,是这样理解的:

cout<<5<<"hello";


  在我们输出了一个5以后返回的是调用第一个<<的对象的引用,即相当于第一个cout,我们就可以接着连续的用同一个cout来调用第二个<<函数了

  (2)参数中引用的s对象,以及在函数体中直接调用s.sname,是需要我们把该函数设置成Student类的友元类的,这样该函数就相当于Student类的成员函数,可以直接访问到Student类的成员变量。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: