首页  >  文章  >  后端开发  >  C 成员函数指针:何时使用 `->*` 与 `.`?

C 成员函数指针:何时使用 `->*` 与 `.`?

DDD
DDD原创
2024-11-17 14:00:04190浏览

C   Member Function Pointers: When to Use `->*` 与 `.`?
“ />*` 与 `.`?

C 中的成员函数指针:揭秘 >* 和 .

许多程序员发现指向成员的指针运算符 > 和 . 在 C 语言中令人困惑,本文阐明了它们的用法以及何时使用它们而不是传统的 > ..

理解 >* 和 .

> 和 . 是允许您访问成员函数的指向成员的指针运算符当您需要将成员函数动态绑定到某个对象时,可以使用这些运算符。 object.

  • >*: 当指针和对象类型相同时使用此运算符。
  • .*: 当指针是派生类型而对象是基类时使用该运算符type.

示例:

考虑以下类:

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn