在C#,重載操作者諸如「+」,「 - 」等,我必須使函數的類的一個靜態成員:我可以在課堂中重載靜態操作符嗎?
class MyType
{
/*...*/
public static MyType operator+ (MyType a, MyType b)
{
MyType ret;
/* do something*/
return ret;
}
}
據我所知,在C++中,這是我怎樣可以重載操作:
class MyType
{
/*...*/
public:
MyType operator+ (MyType b) // *this is the first operand
{
MyType ret;
/* do something*/
return ret;
}
};
的問題是,*this
是第一操作數的,所以第一個操作數的類型必須是的MyType的。例如,如果我要添加MyType
爲整數:
MyType a, b;
b = a + 1; // Valid
b = 1 + a; // Error
在C#,我可以重載「+」運算符對於每種情況。
我的問題是:我可以在C++中使用與C#中相同的方法,使用靜態運算符嗎?據我所知,有一種方法可以與朋友操作員做到這一點,但在繼承該功能時會丟失。
'朋友'是你的朋友。 – Mehrdad
你是什麼意思「他們迷路了」? –
@MooingDuck我的意思是繼承的功能失去了基礎的朋友。 – Tibi