如果你有一個類成員函數標記爲volatile,是否有可能在類成員中使用該函數時拋棄volatile?你可以拋棄易失性函數中的成員揮發性>
0
A
回答
4
是的。爲了拋棄物體的揮發性,使用了const_cast
:
T & t = const_cast<T&>(volatile_t);
這就是這樣。但是,不管你是否應該在你的代碼中使用它,我都不能說沒有看代碼。一般來說,拋棄常量和易失性是一個危險的想法,只有在仔細檢查所有情況之後才能做到。
+0
與任何常數一樣,如果您不遵守常數或波動性保證提供的合約,您可能會遇到未定義的行爲。演員只能作爲其他固定代碼的解決方案;例如,如果你知道一個函數不是在修改引用,而是用非const引用來聲明的。 Const-cast不會*神奇地創建一個可變對象! –
0
您可以使用const_cast
從任何上下文丟棄volatile
。你正在精確地詢問在volatile
成員內部投射,但這沒有什麼區別。
函數中的volatile
是檢查告訴編譯器如果試圖調用一個volatile
對象上(或或通過引用指針volatile
對象)方法,它是無關的volatile
-ness不抱怨的成員。
我想說的是,如果你希望在訪問數據成員與volatile
語義一致的行爲,只是因爲的代碼是一個volatile
成員方法,就不會發生這裏面。
相關問題
- 1. 易失性的成員函數和const
- 2. C++揮發物,揮發性成員
- 3. 揮發性成員不能由成員函數
- 4. const的揮發,易失性寄存器,靜態揮發在C++
- 5. 易失性函數
- 6. 聯合會的揮發性和非揮發性成員的語義是什麼?
- 7. 易失性成員的訪問方法
- 8. 丟失揮發性限定
- 9. 揮發性VS不揮發
- 10. 揮發性數據Solr中
- 11. Postgresql函數揮發性類別
- 12. 在C++中使用非易失性對象調用volatile成員函數
- 13. d成員函數屬性
- 14. 分析中的揮發性
- 15. 爲什麼一個volatile對象不能調用非易失性成員函數
- 16. 揮發性數組C++
- 17. 揮發性古怪
- 18. Visual C++揮發性
- 19. C#揮發性雙
- 20. 當你調用成員函數時,你可以調用friend函數嗎?
- 21. 易失性的int?
- 22. 多態性:你如何訪問派生類成員函數?
- 23. Java易失性數組?
- 24. 你可以在Javascript中聲明兼性函數參數嗎?
- 25. 你可以放棄一個屬性的設置過程
- 26. 你可以在Dart的函數中添加屬性嗎?
- 27. 的Teradata - 揮發性表
- 28. 虛擬成員函數的必要性
- 29. 你可以內聯靜態成員函數嗎?
- 30. 易失性超載?
顯示一些代碼人。 – deepmax
相關:http://stackoverflow.com/questions/7367580/c-c-casting-away-volatile-considered-harmful – Mat
真正的問題是爲什麼?你有代碼說明一個問題,需要你擺脫易變? –