【发布时间】:2020-06-20 19:15:22
【问题描述】:
如何重载运算符“
Operator
class Point
{
int x, y;
public:
bool operator< (const Point* &p) const
{
if (x == p->x)
return y < p->y;
else
return x < p->x;
}
bool operator< (const Point &p) const
{
if (x == p.x)
return y < p.y;
else
return x < p.x;
}
Point (int a, int b)
{
x = a;
y = b;
}
};
这里我测试重载函数。在这两种情况下,我的程序都应该返回 false。
Point* a = new Point(1,2);
Point* b = new Point(0,0);
Point c = Point(1,2);
Point d = Point(0,0);
cout<< boolalpha << (a<b) << '\n'; <- always returns true
cout<< boolalpha << (c<d) << '\n'; <- returns false
【问题讨论】:
-
第一个重载声明在“
Point”和“指向指针”之间声明了一个<重载。这不是两个“pointers to Point”之间的<的重载。
标签: c++ class pointers operator-overloading