![](/img/trans.png)
[英]Should I declare a method const, when underlying OpenGL state is modified
[英]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.