类中的重载!=函数允许使用哪些参数类型

时间:2018-12-26 12:04:10

标签: c++ types operator-overloading operator-keyword

仅出于学习目的,如果我真的想比较苹果和馅饼。暂时忽略rules and idioms

重载运算符允许使用什么类型的参数,例如“运算符!=“?

好的,它正好是一个参数,但是是什么类型?阅读了'functions''declarations''types''operator overloading'之后,我仍然不知道。有什么限制吗?可能与其他功能相同?有人可以确认吗?

任何帮助表示赞赏

编辑:

在我的帖子中,我甚至链接了拟议的重复项。因此,为什么将其标记为dup。我之前读过该主题。我的问题在帖子中没有答案。我不确定如何改写这个问题。它与重载运算符函数中参数的“ C ++类型”有关。 “ C ++类型”类似于types中所述。例如,我认为类型必须完整。还有其他限制或要求吗?

2 个答案:

答案 0 :(得分:0)

  

重载运算符允许使用什么类型的参数,例如“运算符!=”?

有很少的限制,最重要的是:您不能重载内置类型的运算符。因此,二进制运算符的两种类型之一必须是用户定义的类型。

  

[over.oper]/6

     

运算符函数应该是非静态成员函数,或者是具有至少一个参数的非成员函数,该参数的类型是类,对类的引用,枚举或对枚举。不能更改运算符的优先级,分组或操作数的数目。

答案 1 :(得分:0)

根据cppreference,函数签名(对于自由函数)为:

bool operator !=(const T &a, const T2 &b);

位置:

  

T2可以是任何类型,包括T

如果operator!=是类成员函数,则采用类似的措词。加上YSC所说的话。