1. ホーム
  2. c++

[解決済み] C++のPointer-to-Member ->* と .* 演算子とは何ですか?

2023-07-22 22:22:54

質問

はい、私は この質問 このFAQ がありますが、私は まだ は理解できません。 ->*.* はC++で意味します。

これらのページでは、情報 について 演算子に関する情報 (オーバーロードなど) を提供していますが、演算子がどのようなものであるかはよく説明されていないようです。 .

は何ですか? ->*.* は、C++ではどのような場合に使用するのでしょうか? ->. ?

どのように解決するのですか?

この例をご覧になって、ご理解いただけると思います。

//we have a class
struct X
{
   void f() {}
   void g() {}
};

typedef void (X::*pointer)();
//ok, let's take a pointer and assign f to it.
pointer somePointer = &X::f;
//now I want to call somePointer. But for that, I need an object
X x;
//now I call the member function on x like this
(x.*somePointer)(); //will call x.f()
//now, suppose x is not an object but a pointer to object
X* px = new X;
//I want to call the memfun pointer on px. I use ->*
(px ->* somePointer)(); //will call px->f();

さて、あなたは x.somePointer() または px->somePointer() そのために、特別なメンバ関数ポインタ呼び出し構文が使用されます... 自分でいくつかの例を試してみてください、あなたはそれに慣れるでしょう