// operators.cpp : 定义控制台应用程序的入口点。
//made by davidsu33
//2014-6-8 18:40
#include "stdafx.h"
#include <utility>
#include <cassert>
using namespace std;
//utility中提供的rel_ops,操作符之间的转换
//通过实现<和==操作来完成> ! >= <=的操作
struct Point
{
int x,y;
};
bool operator==(const Point& l, const Point& r)
{
return (l.x==r.x) && (l.y==r.y);
}
bool operator<(const Point& l, const Point& r)
{
if (l.x != r.x)
{
return l.x < r.x;
}
return l.y < r.y;
}
void use_rel_ops()
{
//上述对于Point的操作仅实现了==操作符和<操作符
using namespace std::rel_ops;//****必须要加上该命名空间,否则编译不过
Point p1, p2;
p1.x = 2, p1.y = 3, p2.x=2, p2.y=3;
assert(p1 >= p2);
assert(p1 <= p2);
p1.x = 4;
assert(p1 > p2);
assert(p1 != p2);
p1.x = p2.x;
assert(p1 == p2);
}
int _tmain(int argc, _TCHAR* argv[])
{
use_rel_ops();
return 0;
}
//made by davidsu33
//2014-6-8 18:40
#include "stdafx.h"
#include <utility>
#include <cassert>
using namespace std;
//utility中提供的rel_ops,操作符之间的转换
//通过实现<和==操作来完成> ! >= <=的操作
struct Point
{
int x,y;
};
bool operator==(const Point& l, const Point& r)
{
return (l.x==r.x) && (l.y==r.y);
}
bool operator<(const Point& l, const Point& r)
{
if (l.x != r.x)
{
return l.x < r.x;
}
return l.y < r.y;
}
void use_rel_ops()
{
//上述对于Point的操作仅实现了==操作符和<操作符
using namespace std::rel_ops;//****必须要加上该命名空间,否则编译不过
Point p1, p2;
p1.x = 2, p1.y = 3, p2.x=2, p2.y=3;
assert(p1 >= p2);
assert(p1 <= p2);
p1.x = 4;
assert(p1 > p2);
assert(p1 != p2);
p1.x = p2.x;
assert(p1 == p2);
}
int _tmain(int argc, _TCHAR* argv[])
{
use_rel_ops();
return 0;
}