既然學到這兒了,就把運算符重載(OperatorOverloads)學明白。
以楚老師講的一個例子為例
寫一個矢量類(Vector),在定義三個類對象vect1、vect2、vect3。通過數學可以了解到向量之間是可以進行加法操作的。而你要直接寫vect1+vect2編譯器是會報錯的,因為目前的編譯器還沒有做到那麼智能,是以就需要人工進行重載的操作了,操作的對象是“+”。
二進制運算符,第一個參數是放在參數左邊的值一般命名為lhs,第二個參數一般命名為rhs.
下面是重載運算符”+“的核心代碼
public static Vector operator +(Vector lhs, Vector rhs)
{
Vector result = new Vector(lhs);
result.x += rhs.x;
result.y += rhs.y;
result.z += rhs.z;
return result;
}
重載好運算符後,下面是應用的地方
Vector vect1, vect2, vect3;
vect1 = new Vector(1.0, 4.0, 3.0);
vect2 = new Vector(vect1);
vect3 = vect1 + vect2;
最後這個加号就可以執行兩個向量之間的加法操作了。其實運算符重載(OperatorOverloads)就這麼點事兒,了解了解,在看一些運算符重載(OperatorOveraloads)的規則,比如像重載比較運算符的時候(大于、小于)必須成對重載。然後就可以了。