gpt4 book ai didi

c++ - C++ 中的成员指针运算符 ->* 和 .* 是什么?

转载 作者:IT老高 更新时间:2023-10-28 13:23:09 26 4
gpt4 key购买 nike

是的,我见过 this questionthis FAQ ,但我仍然不明白->*.*在 C++ 中的意思。
这些页面提供了关于运算符的信息(例如重载),但似乎没有很好地解释它们是什么

什么是->*.*在 C++ 中,与 -> 相比,你什么时候需要使用它们?和 . ?

最佳答案

我希望这个例子能让你明白

//we have a class
struct X
{
void f() {}
void g() {}
};

typedef void (X::*pointer)();
//ok, let's take a pointer and assign f to it.
pointer somePointer = &X::f;
//now I want to call somePointer. But for that, I need an object
X x;
//now I call the member function on x like this
(x.*somePointer)(); //will call x.f()
//now, suppose x is not an object but a pointer to object
X* px = new X;
//I want to call the memfun pointer on px. I use ->*
(px ->* somePointer)(); //will call px->f();

现在,您不能使用 x.somePointer()px->somePointer(),因为 X 类中没有这样的成员。为此使用了特殊的成员函数指针调用语法……自己尝试几个例子,你就会习惯了

关于c++ - C++ 中的成员指针运算符 ->* 和 .* 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6586205/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com