双括号在函数调用中有什么作用?

5
我正在使用 dlib
我在其中一个示例程序中发现了以下内容: cout << "p(D=0) = " << solution.probability(D)(0) << endl; 我从未在C++中看到过函数调用后的双括号。它是什么意思,如何工作?

1
我猜测 solution.probability(D) 返回一个单参数函数对象,然后您可以使用参数 0 调用它。 - juanchopanza
1
probability(D) 很可能返回一个函数指针。https://dev59.com/nnRA5IYBdhLWcg3wwwvD - kenny
probability是一个返回另一个函数指针、std::function等的函数。它的返回值再次被调用。 - user529758
1个回答

13
< p > < code > solution.probability(D) 返回什么?如果它是一个函数对象或函数指针,你可以调用它,第二组圆括号可能就是这样做的。


const double probability ( const assignment& a ) const; /! ensures - 返回概率 p(X == a) !/ - Pétur Ingi Egilsson
谢谢。这是一个常见的做法吗? - Pétur Ingi Egilsson
@Pétur 这有点取决于应用领域,但我不认为这是罕见的。另一方面:你引用的函数似乎只返回一个double,_并不是_指向函数的指针或者一个功能对象。 - James Kanze

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接