2012-03-15 76 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