c – 为什么我们需要在重载>>和<<运算符时返回对ist
如果我不返回din或dout会发生什么,实际上我正在读一本书,其中作者返回流引用
istream & operator>>(istream &din,vector &a) { for(int i=0;i<size;i++) din>>a.v[i]; return din; } ostream & operator<<(ostream &dout,vector &a) { dout<<"("<<a.v[0]; for(int i=1;i<size;i++) dout<<","<<a.v[i]; dout<<")"; return dout; } 解决方法
原因是几个事实的组合.
>您希望能够像在中一样链接输入和输出操作 在>> x>> ?; out<< z<< std :: precision(10)<< t<<的std :: ENDL; 所以你必须返回一些允许运算符<<再次. operator<<(istream_type,object); //按值获取istream 因为这只适用于特定的istream类型istream_type,但不适用于通用istream.为此,必须使用多态,即获取引用或指针(它将是一个引用或指向从std :: istream派生的类的指针). 因此,对于流指针,必须使用函数调用语法,然后使用C风格的fprintf(stream *,args …). 此外,指针可以为null或悬空,实际上它们是默认状态(在没有初始化程序时声明),而引用可以假定为有效(不能在没有初始化程序的情况下声明它). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |