2012-03-15 101 views
0

爲什麼我不能在我的C++類中創建或重載運算符:=在C++中重載運算符`:=`

是否有一些列表運算符可以重載?

我只能重載,還是會創建一些新的自定義操作符?

+1

通過重新載入,我假設你的意思是過載? – 2012-03-15 19:33:38

+0

是的。謝謝。 – Alex 2012-03-16 06:27:24

回答

11

因爲在C++中不存在這樣的運算符。您無法推出自己的操作員,因爲您需要修改語言的語法,以便解析器識別它們。

您可以找到可用運營商列表herehere(或更好地通過閱讀標準,如果您可以獲得副本)。

最後,請注意,重載操作符像沒有明天是幾乎每個C++初學者所犯的錯誤;運算符實際上只不過是函數而已,除非在大多數情況下重載操作符是非常好的情況,否則爲您的類編寫一個純函數是一個更好的主意。例如,std::stringoperator*即使它可以說,它的方便寫

string sleepy = string("z") * 40; 
+0

我沒有看到任何理由不擁有該字符串運算符;這是'std :: basic_string'模板類的明顯缺失。 :) – Kaz 2012-03-15 19:42:25

+0

@Kaz:此外,還應該隱式轉換爲'class troll'--)。 – Jon 2012-03-15 19:46:43

1

你可以重載的操作符有: enter image description here

也許你的意思是分配或等號運營商。

class Object{ 

public: 

    ///Overload The Assignment Operator 
    Object& operator=(const Object& objectIn); 

    ///Overload The Equals Operator 
    bool operator == (const Object & rhs) const; 

protected: 
private: 
}; 
+0

謝謝你的名單。 – Alex 2012-03-16 06:28:20