繁体   English   中英

<<和>>的运算符重载不适用于参数为const&的流对象

[英]Operator overloading for << and >> does not work stream object in argument is const &

我很困惑 我正在创建一个集合类,当我用这个原型重载<<或>>运算符时:

ostream& operator<<(const ostream & out, Set & argSet)
{
    //whatever my code does
    return out;
}

这是行不通的。 但是,如果我删除第一个参数中的“ const”关键字,它将起作用。 我很困惑为什么它不起作用。 任何帮助将不胜感激。

但是,如果我删除第一个参数中的“ const”关键字,它将起作用。 我很困惑为什么它不起作用。

在两种情况下( ostream&istream&引用的重载operator<<()operator>>() ),流状态通常都由内部执行的操作更改,因此不能将它们作为const引用。

您不能这样做的一个明显原因是不能将隐式地从const引用更改为非const引用的必需返回类型。

该流不能为const因为其内部状态必须能够在插入/提取或其他操作时更改。

例如,如果要达到EOF,它将如何设置相关位( eofbit )?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM