24

volatileC ++のメンバー関数の目的は何ですか?

4

2 に答える 2

25

「揮発性メンバー関数」(質問を投稿した人が最初に意図したものである場合とそうでない場合があります) を持つことの意味についての質問に答えるには、メンバー関数をconstor volatile(または結合されたconst volatile) としてマークすると、それらの修飾子が適用されます。this関数で使用されるポインタへ。標準(9.2.1「thisポインタ」)で述べられているように:

a のメンバ関数における this の型class Xは ですX*。メンバ関数が宣言されている場合、constthis の型は is 、メンバ関数が宣言されている場合、 isの型、メンバ関数が宣言されている場合、this の型は isです。const X*volatilethisvolatile X*const volatileconst volatile X*

したがって、メンバー関数を としてマークすることによりvolatile、そのメンバー関数内のオブジェクトの非静的データ メンバーへのアクセスを として行いますvolatile

于 2010-03-15T03:20:18.757 に答える
8

編集:

この回答は、質問が 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
}
于 2010-03-15T02:36:03.470 に答える