我以前从未使用过它,只是在一篇文章中偶然发现它...我认为它等同于 *x->y
但显然不是。
这是我尝试过的,但给了我一个错误:
struct cake {
int * yogurt;
} * pie;
int main(void) {
pie = new cake;
pie->yogurt = new int;
return pie->*yogurt = 4;
}
最佳答案
当你有指向成员函数的指针时使用它。
当你有一个指向一个类的函数的指针时,你可以像调用任何成员函数一样调用它
object.membername( ... )
或
objectptr->成员名( ... )
但是当你有一个成员函数指针时,需要在 .或 -> 以便编译器理解接下来是变量,而不是要调用的函数的实际名称。
这是一个如何使用它的例子。
class Duck
{
public:
void quack() { cout << "quack" << endl; }
void waddle() { cout << "waddle" << endl; }
};
typedef void (Duck::*ActionPointer)();
ActionPointer myaction = &Duck::quack;
void takeDuckAction()
{
Duck myduck;
Duck *myduckptr = &myduck;
(myduck.*myaction)();
(myduckptr->*myaction)();
}
关于c++ - ->* 运算符到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7682072/