C++ 判断自定义类相等

来源:百度知道 编辑:UC知道 时间:2024/06/02 18:40:17
小弟写C++时自定义的类使用“==”判断时候出现错误。
C++自定义类必须重载“==”吗?java中类一般不用重写等号;
请问应该如何写重载。举个简单例子。
我才学两天C++。 shl_xy2 代码好写不写了。。。。

举个复数的例子:
#include<iostream>
using namespace std;
class complex{
public:
complex(double r,double i):real(r),image(i)
{ }
bool operator==(const complex& other)
{
return (real==other.real&&image==other.image);
}
private:
double real,image;
};
void main()
{
complex c1(1,1),c2(2,2),c3(1,1);
bool b1=(c1==c2),b2=(c1==c3);
cout<<b1<<" "<<b2<<endl;
}

当然要重载,比如类里有几个成员对象,你不重载怎么可以知道等不等,不过我还没有重载过“==”,代码好写就不多说了,如下是可以重载的运算符和不可以重载的运算符:
可以重载的运算符:
双目运算符 + - * / %
关系运算符 == != < > <= >=
逻辑运算符 || && +
单目运算符 + - * &
自增自减运算符 ++ --
位运算符 | & ~ ^ << >>
赋值运算符 = += -= *= /= %= &= |= ^= <<= >>=
空间申请和释放 New delete new[] delete[]
其他运算符 () -> ->* , []

1.2. 不允许重载的运算符
不允许重载的运算符只有5个:
. (成员访问符)
.* (成员指针访问运算符)
:: (域运