Home > Article > Backend Development > C Member Function Pointers: When to Use `->*` vs. `.`?
*` vs. `.`? " />
Member Function Pointers in C : Demystifying >* and .
Many programmers find the pointer-to-member operators > and . in C confusing. This article clarifies their usage and when to employ them over the traditional > and ..
Understanding >* and .
> and . are pointer-to-member operators that allow you to access member functions through pointers. These operators are used when you need to dynamically bind a member function to an object.
Example:
Consider the following class:
struct X { void f() {} void g() {} };
To create a pointer to the member function f, we can use the typedef:
typedef void (X::*pointer)();
Now, we can assign f to the pointer somePointer:
pointer somePointer = &X::f;
To call the member function using the pointer, we need an object:
X x; (x.*somePointer)(); // Calls x.f()
If x is a pointer to an object, we need to use >* instead:
X* px = new X; (px ->* somePointer)(); // Calls px->f()
Usage Scenarios:
You typically need to use > and . in scenarios where you need to pass member functions as arguments to functions or store them in containers. These operators provide a way to decouple the function call from the specific object instance.
Conclusion:
The pointer-to-member operators > and . in C are powerful tools that allow for dynamic function binding. By understanding their usage and when to employ them over the traditional > and ., you can enhance your code's flexibility and reusability.
The above is the detailed content of C Member Function Pointers: When to Use `->*` vs. `.`?. For more information, please follow other related articles on the PHP Chinese website!