簡體   English   中英

為什么volatile對象不能調用非易失性成員函數

[英]why can't a volatile object call nonvolatile member function

為什么volatile對象不能調用非易失volatile成員函數?

在的情況下const ,是非常有意義的調用非const成員函數違反對象的常量性 ,因此它被禁止。 為什么volatile

在const的情況下,調用非const成員函數違反了對象的常量是有道理的,因此它是被禁止的。 但為什么在波動?

對於不穩定的情況也是如此。 易失性意味着對對象的每次訪問都是可見的副作用,無法消除。 如果在易失性對象上調用非易失性方法,則會違反此屬性(因為非易失性方法會將對象視為普通對象)。 因此,這是不可能的。

從標准:

7.1.5.1。 如果嘗試通過使用具有非volatile-quailified類型的左值來引用使用volatile-quailified類型定義的對象,則程序行為是未定義的。

我猜你的編譯器發布了一個錯誤來防止未定義的行為。 標准陳述應該是足夠的理由。

volatile限定符的工作方式與const工作方式相同。 要了解可以做些什么 ,請看看這篇Alexandrescu文章 那篇文章也應該讓你對原因有所了解。

暫無
暫無

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

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