我正在尝试理解C ++中的运算符重载,并且在小心使用+和[]等运算符时可以看到它的用处。我现在对()的重载很感兴趣。 Boost似乎将它与统计类一起使用,我可以使用它们,但是我并不真正了解我在做什么。
任何人都可以提供一个简单的例子,说明何时重载()运算符会有用? 多谢你们 皮特
答案 0 :(得分:0)
总结:在C ++类中重载()运算符允许您使用不同类型和数量的参数实现类方法,为每个参数提供不同的功能。当重载()时,需要小心,因为它的使用没有提供关于正在做什么的线索。它发现使用有限,但对于矩阵操作这样的事情可能有效。
答案 1 :(得分:0)
重载operator()的常见用法是函数对象或functors
。您可以使用定义operator()的类的对象,并使用它就像它是一个函数,如下例所示:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class multiply
{
private:
int x;
public:
multiply(int value):x(value) { }
int operator()(int y) { return x * y; }
int getValue() { return x; }
};
int main()
{
multiply m(10); //create an object
cout << "old value is " << m.getValue() << endl;
int newValue = m(2); //this will call the overloaded ()
cout << "new value is " << newValue << endl;
}