()运算符重载示例

时间:2012-06-09 05:14:19

标签: c++ operator-overloading

我正在尝试理解C ++中的运算符重载,并且在小心使用+和[]等运算符时可以看到它的用处。我现在对()的重载很感兴趣。 Boost似乎将它与统计类一起使用,我可以使用它们,但是我并不真正了解我在做什么。

任何人都可以提供一个简单的例子,说明何时重载()运算符会有用? 多谢你们 皮特

2 个答案:

答案 0 :(得分:0)

总结:在C ++类中重载()运算符允许您使用不同类型和数量的参数实现类方法,为每个参数提供不同的功能。当重载()时,需要小心,因为它的使用没有提供关于正在做什么的线索。它发现使用有限,但对于矩阵操作这样的事情可能有效。

来自:Overloading the () operator (learncpp.com)

答案 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;
}