我需要什么操作员来重载?

时间:2012-03-01 20:17:08

标签: c++ operator-overloading

我想重载“接收器”操作符,以便我可以执行此操作:someClass >> myClass

...其中myClass是我需要为运算符重载的类。

希望这是有道理的。

3 个答案:

答案 0 :(得分:2)

>> 运营商。你想重载operator>>。签名将如下所示:

someClass& operator>>(someClass&, myClass&);

答案 1 :(得分:2)

正如@Mysticial指出的那样,你需要重载operator>>才能做到这一点。

虽然过载可以成为myClass的成员。它必须是someClass的成员,否则是全局重载。

class someClass { 
// ...
    someClass &operator>>(myClass &);
};

或:

someClass &operator>>(someClass &, myClass &);

如果操作符不能/不能更改someClass对象的状态,您可能希望通过const引用传递第一个参数(在这种情况下,您还将返回一个const引用)。

当然,返回一个someClass并不是真的需要,但它是这种运算符通常被接受的做法(它允许将运算符链接到a >> b >> c;

答案 2 :(得分:0)

您需要使用argument-dependent lookup ...我没有经常使用它,但您需要使用ADL重载operator >>(请参阅链接)。