簡體   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