重载比较运算符类指针做参数(错误)
代码如下
friend bool operator==(Shape* A,Shape* B)
{
if (A->Area() == B->Area())
{
return true;
}
else
return false;
}
在main函数中创建的是Shape*类型的数组
Shape* m_Shape[20];
想重载判等运算符来判断Shape类的两种派生类的面积是否相等
出现如下错误
重载operator==函数必须含有类类型或数据类型的参数
将代码做如下修改,编译正常
friend bool operator==(Shape& A,Shape& B)
{
if (A.Area() == B.Area())
{
return true;
}
else
return false;
}
普通函数类指针做参数(正确)
在抽象类Shape中
代码如下
static double totalArea(Shape*A,Shape* B)
{
return A->area()+B->area();
}
编译运行正常
总结
在重载运算符函数中参数不能是指针,必须含有类类型的参数,而普通函数的参数并无限制。