C++运算符重载==,<,>,<=,>=https://blog.csdn.net/qq_58665528/article/details/122417755
让我们先来分析分析下面这段语句
std::cout << "wuhu" << "dsm";
这段话告诉我们的信息有下
运算符<<接受两个参数,左边ostream对象std::cout, 右边可以接受一个字符串,另外肯定是要返回一个ostream对象,因为要允许连续的输出字符串,另外应该是返回的引用,这样之前的字符串能够串联起来。
综上得出std::ostream& operator<<(std::istream& cout, const Point& point);
由此也可以得出std::istream& operator>>(std::istream& cin, const Point& point)
class Point { private: int m_xPosition; int m_yPosition; friend std::ostream& operator<<(std::ostream& cout, const Point& point);//重载运算符<< 声明 friend std::ostream& operator>>(std::ostream& cin, const Point& point); //重载运算符>> 声明 public: Point(int xPosition = 0, int yPosition = 0); //构造函数 声明 }; //构造函数 定义 Point::Point(int xPosition, int yPosition) : m_xPosition(xPosition), m_yPosition(yPosition) {} //重载运算符<< 定义 std::ostream& operator<<(std::ostream& cout, const Point& point) { cout << "xPosition:" << point.m_xPosition << " yPosition:" << point.m_yPosition; return cout; } //重载运算符>> 定义 std::ostream& operator>>(std::ostream& cin, const Point& point) { cin >> point.m_xPosition >> point.m_yPosition; return cin; }
值得注意的是,由于ostream和istream都是外来类,而它们要访问point类的私有成员,所以必须声明为友元函数。