簡體   English   中英

一個等待狀態改變的方法應該是const嗎?

[英]Should a method that waits for a change of state be const?

在多線程場景中,我有一個這樣的方法:

bool WaitForChange( time_duration WaitTime ) const;

此方法等待,直到對象的狀態發生變化並返回true,或者直到超時超時(你怎么說?)並返回false。

我的直覺是, const是為了防止方法本身產生不必要的副作用,所以這很好。 但話說回來,一些用戶可能認為狀態不會發生變化,因為該方法被聲明為const 該用戶是愚蠢的,還是應該將方法設為非const以避免混淆?

通過將方法聲明為const,您可以說“調用此方法不會更改對象的狀態”。 這(希望)是真的。 所以讓它成為常數。

如果有人認為,const-ness意味着“在調用此方法時,沒有其他人可以改變對象狀態”而不是那個人是錯誤的。

我投票給constness。

該方法本身不會改變任何東西,只是等待......

如果你正在等待對象成員是否已經改變了......那么揮發性呢?

bool WaitForChange( time_duration WaitTime ) volatile

const意味着整個函數調用中對象的狀態是相同的,所以我不會使用它。 另一方面, volatile向編譯器指示應該在訪問成員時重新獲取成員,如果您正在尋找更改,這可能就是您想要的。

暫無
暫無

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

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