簡體   English   中英

為什么<< ofstream in operator不是const?

[英]Why << operator in ofstream is not const?

我注意到ofstream中的operator <<不是const 很明顯,這個操作符會改變文件的內容,但是它在ofstream對象中的變化是什么?

換句話說,如果我將ofstream作為類成員函數並且我想在const成員函數內調用<< operator ,我必須將其更改non-const成員函數或將ofstream標記為mutable但似乎不是從抽象的角度來看,對我來說是合乎邏輯的......我有沒有想念?

因為它在邏輯上改變了流。 至少,它改變了流緩沖區中的寫入位置。 它還可以修改流的狀態(例如,發生寫入錯誤時)。

但更重要的是(在我看來)是邏輯上的可變性。 寫入后流不一樣 - 它具有新值。 如果您的班級不關心這一事實,您可以聲明您的流成員是mutable

因為它可以調用setstate()而不是const ,因為它改變了對象的內部結構,如流的格式化部分所述

請記住,雖然ofstream本身不需要被修改以便寫入(即使它可能應該),但是也必須修改從ostream類繼承<<運算符的ostringstream才能被寫入,如您需要更改內部string對象。 因此,必須將運算符聲明為const以涵蓋所有情況(運算符在ostream類中定義)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM