4

次の C++03 プログラムを検討してください。

#include <iostream>

struct T
{
    mutable int x;

    T() : x(0) {}
};

void bar(int& x)
{
   x = 42;
}

void foo(const T& t)
{
   bar(const_cast<int&>(t.x));
}

int main()
{
   T t;
   foo(t);
   std::cout << t.x << '\n';
}

動作しているように見えますが、安全ですか?

フィールドを変更しているだけですmutableが、そのコンテキストを完全に取り除いてconstしまうと緊張します。

4

1 に答える 1

8

安全ですが、不要でもあります。のためmutablet.xはすでにタイプint&です。キャストが完全に削除された場合、サンプル プログラムは正常に動作します。

于 2012-11-19T14:54:40.083 に答える