c++调用没有点或this指针运算符的函数调用

标签 c++

我有一个c++问题,请看下面的代码:

ArbitraryIterator *iter = (ArbitraryIterator *) state->iter;

ArbitraryCollection_Entry *result;

result = (ArbitraryCollection_Entry *) (*iter)();

我的问题在这个代码块的最后。我不确定最后一部分“(*iter)()”在做什么。这是一个函数调用,但我不确定它在调用什么?这是调用构造函数的另一种方式吗?我知道这可能是一个更普遍的问题,而不是具体到上面的代码示例中是如何实现的。对此有任何帮助或澄清,我们将不胜感激。

谢谢

最佳答案

(*iter)();

这是 2 个 Action :

  • 取消引用 iter(调用它是 operator*)
  • 在上一个操作的结果上调用operator(),不带参数

您的迭代器迭代可调用对象的集合,这种类型的一个例子是:

std::vector<std::function<void*()>>::iterator

关于c++调用没有点或this指针运算符的函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24434921/

相关文章:

c++ - 从模板分配空指针

c++ - OpenGL ES 3.1 - 无法使用 glTexImage2D 创建不可变纹理

c++ - 在 Qt Stickman 示例中将火柴人的头像更改为我教授的头像

C++ 程序中函数的 Python 绑定(bind)

c++ - 从其他容器构造的 STL 容器(例如,从 vector 列表)

c# - C++ 和 SharpZipLib

c++ - inline 关键字导致 Visual C++ 中的链接器错误 2019

c++ - bool __cdecl func(void) 已在 func.obj 中定义

c++ - 在 vector 中拆分双端队列

c++ - C++中的静态抽象方法