![](/img/trans.png)
[英]Calling volatile member function using not volatile object in C++
[英]What is the purpose of a volatile member function in C++?
在C ++中使用volatile
成員函數的目的是什么?
要回答關於具有“易變成員函數”意味着什么的問題(可能是也可能不是發布問題的人最初想要的),將成員函數標記為const
或volatile
(或組合的const volatile
)將這些限定符應用於函數中使用的this
指針。 如標准所述(9.2.1“ this
指針”):
class X
的成員函數中的class X
是X*
。 如果成員函數聲明為const
,這個類型是const X*
,如果成員函數聲明為volatile
的類型,this
是volatile X*
,如果成員函數聲明為const volatile
,這種類型是const volatile X*
。
因此,通過將成員函數標記為volatile
您可以將該成員函數中對象的非靜態數據成員的任何訪問權限設置為volatile
。
編輯:
當問題是關於volatile關鍵字時,發布了這個答案。 問題似乎已由第三方改變。
原版的:
易失性通知編譯器它不應該假設它剛剛放入標記為volatile的變量中的值將在下次使用它時...它必須在再次使用它之前檢查當前值。
一個示例是變量表示可能由另一個進程更改的內存位置。
這是一個例子(自從我做C ++以來已經很久了,所以請原諒任何次要的語法問題):
volatile int x;
int DoSomething()
{
x = 1;
DoSomeOtherStuff();
return x+1; // Don't just return 2 because we stored a 1 in x.
// Check to get its current value
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.