'this' ポインターの型
C では、クラス メソッド内の 'this' ポインターは現在のオブジェクト インスタンスを参照します。その型は、メソッドが const として宣言されているかどうかによって異なります。
非定数メソッドの内部:
非定数メソッド内では、「this」の型は これにクラス名*を付けます。これにより、オブジェクトのメンバー変数を直接変更できます。
定数メソッド内:
const メソッドでは、'this' の型は const ClassName* this。これは、const メソッドがオブジェクトの状態を変更できないためです。
コンパイラーの特徴と実装された制限事項:
古いバージョンの MSVC など、一部のコンパイラーは ' を実装する場合があります。 this' は、メソッドが const であるかどうかに関係なく、定数ポインターとして扱われます。ただし、これは C 言語仕様に準拠していない非標準の動作です。
右辺値参照の検出:
C での右辺値参照の導入により11 では、この非標準的な動作を検出できるようになりました。これに依存するコードは、標準準拠のコンパイラでコンパイルできません。
MSVC 実装:
Visual Studio 2017 の時点で、MSVC は依然として非標準実装を使用しています。 'this' を定数ポインタとして使用します。これにより、右辺値参照を使用するコードで問題が発生する可能性があります。
以上がC の定数メソッドと非定数メソッドの「this」ポインタの型は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。