C の定数メソッドと非定数メソッドの「this」ポインタの型は何ですか?

Mary-Kate Olsen
リリース: 2024-11-09 21:21:02
オリジナル
201 人が閲覧しました

What is the Type of the 'this' Pointer in C   Constant and Non-Constant Methods?

'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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート