2013-04-27 42 views
8

我正在定義一個類NS,我希望能夠對這個類的對象執行數學運算。我,成功編譯重載+, - ,*,/,... 我的問題是,我不能編譯其中有一部分像這樣的代碼:C++操作符重載,定義對象的負數

NS a,b; 
a = -b; 

我如何定義負的對象?

+6

通過閱讀你的C++的書! – 2013-04-27 12:45:15

回答

18

你可以用非常相似的方式重載二進制運算符-。相反,如果它是一個成員,那麼它就成爲一個無功功能,如果它是非成員,則成爲一元功能。例如,作爲一個成員:

class NS 
{ 
    public: 
    // Applies to this 
    NS operator-() { /* implement */ } 
}; 

作爲一個非成員:

class NS 
{ 
    friend NS operator-(const NS&); 
}; 

// Applies to obj 
NS operator-(const NS& obj) { /* implement */ }