[Lang] 运算符重载
1.[Lang] 静态变量2.[Lang] Lambda表达式3.[Lang] 类成员修饰符4.[Lang] 构造与析构5.[Lang] 智能指针
6.[Lang] 运算符重载
7.[Lang] 虚函数8.[Lang] 函数模板9.[Lang] 类模板10.二分查找11.链表操作12.栈和队列13.二叉树遍历14.归并分治15.快速排序16.堆结构17.位运算18.链表操作219.二叉树常见题目20.前缀树21.前缀和22.二叉树常见题目223.二维差分24.滑动窗口25.双指针26.二分答案法27.单调栈28.单调队列29.并查集30.洪水填充31.一维动态规划32.二维动态规划33.二维动态规划234.三维动态规划35.子数组最大累加和36.子数组最大累加和237.零一背包[Lang] 运算符重载
#include<iostream>
using namespace std;
class MyInt {
friend ostream &operator<<(ostream &os, const MyInt &myint);
friend istream &operator>>(istream &is, MyInt &myint);
private:
int val;
public:
MyInt() : val(0) {}
MyInt(int val) : val(val) {}
MyInt &operator++() {
val++;
return *this;
}
MyInt operator++(int) {
MyInt temp = *this;
val++;
return temp;
}
};
ostream &operator<<(ostream &os, const MyInt &myint) {
os << myint.val;
return os;
}
istream &operator>>(istream &is, MyInt &myint) {
is >> myint.val;
return is;
}
int main() {
MyInt a, b;
cin >> a >> b;
cout << ++(++a) << endl;
cout << (b++)++ << endl;
return 0;
}
PS D:\CppDev\Lang\overload> cd "d:\CppDev\Lang\overload\" ; if ($?) { g++ test1.cpp -o test1 } ; if ($?) { .\test1 }
10 20
12
20
1. 递增运算符
(1) 前置递增
- 返回值必须为引用,否则++(++a)后a的值将与预期不一致
(2) 后置递增
-
返回值不能为引用,否则将导致悬空指针问题
-
占位符int表示后置单目运算符,用于实现函数重载
2. 移位运算符
- 必须由普通函数重载,否则顺序将与预期不一致
- 必须返回标准输出流或标准输入流自身,否则将无法实现级联
- 由于是类外函数,必须在类内声明友元
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!