*` 和 `.*` 成员指针运算符有效吗? " />
理解 C 语言中的指针成员运算符 -> 和 .
尽管有现有文档,但仍要掌握指针的含义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; }
在此示例中,指针取消引用成员函数指针&X::f 并将其分配给指针。然后,在 x 上使用 . 来调用 x.f(),在 px 上使用 -> 来调用 px->f()。
通过理解 -> 之间的区别; 和 . 当每一个都合适时,开发人员可以有效地处理 C 中的成员函数指针和间接函数调用。
以上是C 的 `->*` 和 `.*` 成员指针运算符如何工作?的详细内容。更多信息请关注PHP中文网其他相关文章!