「mutable」には、Const メンバー関数の Mutable メンバー以外にも幅広い用途がありますか?
C の 'mutable' キーワードにより、データ メンバーの変更が可能になりますconst メンバー関数内。しかし、他に何か目的があるのではないかと疑問に思う人もいるかもしれません。
実際には、'mutable' キーワードはビット単位の 'const' と論理的な 'const' を区別します。論理「const」は、オブジェクトがパブリック インターフェイスを通じて目に見えて変更されないことを示します。これには、変更がオブジェクトの内部状態内で発生し、外部からアクセスできないため、スレッド セーフのために const 関数でミューテックスをロックするなどのシナリオが含まれます。
別のアプリケーションが計算値をキャッシュし、変更可能なメンバー関数を介してそれらにアクセスしています。このような関数は、値を一度フェッチして保存し、論理的な 'const' を維持しながら内部変更を可能にします。
さらに、C 11 では可変ラムダが導入されました。これらにより、キャプチャされた変数 (通常は値によって参照される) を変更できるようになります。例:
int x = 0; auto f1 = [=]() mutable {x = 42;}; // OK auto f2 = [=]() {x = 42;}; // Error
ここでは、変更不可能なラムダ キャプチャは変更できないため、「f2」は失敗します。したがって、「mutable」は const メンバー関数のメンバーの変更を可能にするだけでなく、ビット単位の「const」と論理的な「const」を区別し、可変ラムダでのデータ変更を容易にすることにも拡張されます。
以上がConst メンバー関数を超えて: C では `mutable` キーワードは他にどのような用途がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。