*` と `.*` メンバーへのポインター演算子? " />
既存のリソースを調べたにもかかわらず、依然として困惑していることに気づくかもしれません。 C の謎めいた -> および . 演算子 この記事は、解明することを目的としています。
メンバーへのポインター演算子の目的を理解する
両方 -> と . は、メンバー関数への間接的なアクセスを容易にするメンバーへのポインター演算子です。この複雑な用語は、本質的に、これらの演算子を使用すると、関数を呼び出すことができることを意味します。オブジェクトから直接ではなく、ポインターを介したメンバー関数。
構文と使用法
使用する場合 -> と .
例
メンバー関数 f() と g() を持つクラス X について考えます。 f() 関数を指すポインターがあるとします。
struct X { void f() {} void g() {} }; typedef void (X::*pointer)(); pointer somePointer = &X::f;
オブジェクト x を使用して somePointer を呼び出すには、次のようにします。
X x; (x.*somePointer)(); // Calls x.f()
x がオブジェクトでない場合ただし、オブジェクトへのポインターの場合は、 ->* を次のように使用してメンバー関数を呼び出すことができます。
X* px = new X; (px->*somePointer)(); // Calls px->f()
この例は、ポインターを介して間接的にメンバー関数にアクセスする場合、特にポイント先のオブジェクトを扱う場合、 ->> または . の使用が重要であることを示しています。
以上がC の `->*` と `.*` のメンバーへのポインタ演算子の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。