使用运算符 ->*

Use of Operator ->*

本文关键字:gt 运算符      更新时间:2023-10-16

可能重复:
如何过载->*操作人员

运算符->*的含义是什么?

以及它如何在过载中发挥作用?

->*.*运算符用于通过指针访问类成员,请参阅以下链接以获取示例:

http://c-for-crogrammers.org.ua/ch22lev1sec6.html

你可能会发现这个SO答案也很有用。

operator->*用于指向成员的指针。

struct foo{
  void bar(){}
};
int main(){
  typedef void (foo:*foo_memptr)();
  foo_memptr pfunc = &foo::bar;
  foo f;
  foo* pf = &f;
  (f.*pfunc)(); // on object or reference
  (pf->*pfunc)(); // on pointer to object
}

重载它通常只有对智能指针有用,甚至它们也不这么做,因为它非常复杂,((*pf).*pfunc)()可以实现相同的功能。Scott Meyers甚至写了一份关于如何做到这一点的PDF!