*` 対 `.`?
" />
C のメンバー関数ポインター : >* と .
多くのプログラマーは、メンバーへのポインター演算子 > と . を見つけます。 C の
は混乱を招きます。この記事では、これらの使用法と、従来の > を使用する場合について説明します。 ..>* および .
> および .
は、メンバー関数へのアクセスを可能にするメンバーへのポインター演算子であることを理解するこれらの演算子は、メンバー関数を動的にバインドする必要がある場合に使用されます。 object.例:
次のクラスについて考えます:struct X { void f() {} void g() {} };メンバー関数 f へのポインターを作成するには、次のようにします。 typedef を使用できます:
typedef void (X::*pointer)();これで、f をポインターに代入できます。 somePointer:
pointer somePointer = &X::f;ポインターを使用してメンバー関数を呼び出すには、オブジェクトが必要です:
X x; (x.*somePointer)(); // Calls x.f()x がオブジェクトへのポインターの場合、>* を使用する必要があります。代わりに:
X* px = new X; (px ->* somePointer)(); // Calls px->f()
の使用法シナリオ:
通常、メンバー関数を引数として関数に渡すか、コンテナーに格納する必要があるシナリオでは、> と .
を使用する必要があります。これらの演算子は、特定のオブジェクト インスタンスから関数呼び出しを分離する方法を提供します。結論:
メンバーへのポインター演算子 > と 。 C の
は、動的な関数バインディングを可能にする強力なツールです。それらの使用法と、従来の > 上でそれらをいつ使用するかを理解することで、と . を使用すると、コードの柔軟性と再利用性を高めることができます。以上がC メンバー関数ポインター: `->*` と `.` をいつ使用するか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。