volatile
C ++のメンバー関数の目的は何ですか?
2 に答える
「揮発性メンバー関数」(質問を投稿した人が最初に意図したものである場合とそうでない場合があります) を持つことの意味についての質問に答えるには、メンバー関数をconst
or volatile
(または結合されたconst volatile
) としてマークすると、それらの修飾子が適用されます。this
関数で使用されるポインタへ。標準(9.2.1「this
ポインタ」)で述べられているように:
a のメンバ関数における this の型
class X
は ですX*
。メンバ関数が宣言されている場合、const
this の型は is 、メンバ関数が宣言されている場合、 isの型、メンバ関数が宣言されている場合、this の型は isです。const X*
volatile
this
volatile X*
const volatile
const volatile X*
したがって、メンバー関数を としてマークすることによりvolatile
、そのメンバー関数内のオブジェクトの非静的データ メンバーへのアクセスを として行いますvolatile
。
編集:
この回答は、質問が volatile キーワードに関するものであったときに投稿されました。質問は第三者によって変更されたようです。
オリジナル:
Volatile は、 volatile としてマークされた変数に入れただけの値が、次回使用するときにそこにあると想定すべきではないことをコンパイラに通知します...再度使用する前に現在の値を確認する必要があります。
1 つの例は、変数が別のプロセスによって変更される可能性のあるメモリ位置を表している場合です。
以下に例を示します (私が 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
}