Tom*_*dok 0 c++ overloading class parentheses
我经常看到这种情况,并且想知道它的用途/目的。
例
std::vector<double> operator()(int seed) const;
Run Code Online (Sandbox Code Playgroud)
谢谢!
就我所知,函子和矩阵索引是最常见的用例。
矩阵索引
对于矩阵类,您可以执行以下操作:
Matrix3x3 A;
A(1,2) = 2;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,使用括号而不是括号的主要原因是括号运算符仅接受一个参数,而括号运算符则接受多个参数。
函数
如果您希望对象充当还可以存储信息的功能,则可以执行以下操作:
Accumulator accumulate;
for(int i=0; i<20; ++i)
accumulate(i);
std::cout << accumulate.sum << std::endl;
Run Code Online (Sandbox Code Playgroud)
在C ++中,即使比较器对象不存储信息,也经常会遇到它们的函子。