欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

快来mark! 结构体重载运算符大全(运算、比较、赋值、输入输出)

发布时间:2024/2/28 编程问答 47 豆豆
生活随笔 收集整理的这篇文章主要介绍了 快来mark! 结构体重载运算符大全(运算、比较、赋值、输入输出) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

学习紫皮书的结构体重载时,刘先生只给了加法、输出两种重载方式,成功激发了笔者的探索欲(不学懂心痒痒系列)。
但当笔者网搜时,弹出的结果可真是千奇百怪、五花八门。有定义在结构体里的, 有定义在外面的, 有缺比较的,有缺输入输出的,简直惨不忍睹。让人头晕眼花。


经历了漫长的修炼,笔者终于mark齐了统一格式的全部的运算符重载,分享给大家,让我们一起:吧!

注:笔者采用结构体内定义的方式,将运算符分为五大类(运算、比较、赋值、输入、输出) 每一类都挑选有代表性一种的给大家演示。
运算:+, -, *, /, +=等等
比较:>, = ,<, ≥, ≤, ==, !=等
赋值:=
输入:>>
输出:<<

代码:

#include<iostream> #include<cstdio> using namespace std; struct Point {int x, y;Point(int x = 0, int y = 0): x(x), y(y) {}//重载算术运算符(- * / +=同理)Point operator + (const Point& A) {x += A.x;y += A.y;return *this; } //重载比较运算符(< == != 同理)bool operator > (const Point& A) {return x > A.x; }//重载赋值运算符Point operator = (const Point& A) {x = A.x;y = A.y;return *this; } //重载输入输出运算符 friend istream& operator >> (istream& in, Point& P) {in >> P.x >> P.y;return in;}//重载输出运算符friend ostream& operator << (ostream&, const Point& P) {cout << "(" << P.x << "," << P.y << ")";return cout;} }point[10]; //结构体数组 int main() {//创建 Point a(5,4), b(4,2); //构造函数创建结构体 point[0].x = 2 ; point[0].y = 4; //结构体数组创建结构体point[1].x = 1 ; point[1].y = 4;//算术运算符point[1] = point[1]+point[0]; //比较运算符 cout << (point[0]>point[1]) << endl; //赋值运算符:point[2] = point[1];cout << point[2] << endl; //输入运算符cin >> point[5]; //输出运算符 cout << point[5]; return 0; }

叮!

总结

以上是生活随笔为你收集整理的快来mark! 结构体重载运算符大全(运算、比较、赋值、输入输出)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。