我正在尝试将一些C#代码移植到另一种语言(C#不是我常用的语言)。
我有一个向量类(cpVect
),它会覆盖'+'运算符两次:
public static cpVect operator +(cpVect p1, cpVect p2)
{
return new cpVect(
p1.x + p2.x,
p1.y + p2.y
);
}
public static cpVect operator +(cpVect p1)
{
return new cpVect(
+p1.x,
+p1.y
);
}
我可以看到两个方法都返回了cpVect
的新实例,但我试图弄清楚如何在代码示例中调用这些方法(所以我可以确保将它们移植到它们中)正确)。例如,第二种方法是否将p1添加到接收cpVect?
v3 = v1 + v2 <-- does this call method one above?
v1 = v1 + v2 <-- does this call method two above?
由于
答案 0 :(得分:4)
两者都调用二进制运算符。如果您只有一个操作数,则会调用一元运算符:
v3 = +v1;
一元+
运算符很少有用,说实话 - 但它主要用于与一元-
运算符对称。