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

时间:2014-06-26 15:46:03

标签: c++

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

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

ArbitraryCollection_Entry *result;

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

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

感谢

1 个答案:

答案 0 :(得分:3)

(*iter)();

这是两个动作:

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

你的迭代器遍历一组可调用对象,这种类型的一个例子是:

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