*` と `.*` メンバーへのポインター演算子は機能しますか? " />
ポインターからメンバーへの演算子を理解する -> C の と .
既存のドキュメントにもかかわらず、ポインターの意味を理解する-to-member 演算子 ->C の と . は次のようになります。この記事は、その機能とさまざまなシナリオでの応用を明確にすることを目的としています。
-> と . とは?
ポインタ- to-member 演算子は、オブジェクトへのポインターまたは参照を通じて間接的にメンバー関数にアクセスするために使用されます。 -> 逆参照。参照先オブジェクトのメンバー関数を呼び出すためのメンバー関数ポインター。 は、参照先のオブジェクトのメンバー関数を呼び出すためのメンバー ポインターを逆参照します。
使用する場合 ->と .?
X* px = new X; pointer somePointer = &X::f; (px->*somePointer)(); // Calls px->f()
X& rx = x; pointer somePointer = &X::f; (rx.*somePointer)(); // Calls rx.f()
例
次のコードを考えてみましょう:
struct X { void f() {} void g() {} }; int main() { X x; void (X::*pointer)() = &X::f; // Call x.f() using .* (x.*pointer)(); X* px = new X; // Call px->f() using ->* (px->*pointer)(); return 0; }
この中でたとえば、pointer はメンバー関数ポインター &X::f を逆参照し、それを pointer に割り当てます。次に、. を x で使用して x.f() を呼び出し、-> を px で使用して px->f() を呼び出します。
-> の違いを理解することで、 ; と . があり、それぞれが適切であれば、開発者は C でメンバー関数ポインターと間接関数呼び出しを効果的に処理できます。 .
以上がC の `->*` および `.*` メンバーへのポインタ演算子はどのように機能するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。