1、重载前置递减运算符
#include <iostream>
using namespace std;
class MyInteger {
// 将这个全局函数做友元,可以访问私有属性
friend ostream& operator<<(ostream& out, MyInteger myint);
public:
MyInteger() {
m_Num = 2;
}
//前置--
MyInteger& operator--() {
//先--
--m_Num;
//再返回
return *this;
}
private:
int m_Num; //私有属性
};
//重载左移输出运算符<<
ostream& operator<<(ostream& out, MyInteger myint) {
out << myint.m_Num;
return out;
}
int main() {
//将自定义类型的数据前置--后输出
// 1、重载左移输出运算符<<
// 2、重载递减运算符--
MyInteger myInt;
cout << "--myInt 值为: " << --myInt << endl;
cout << "myInt 值为: " << myInt << endl;
return 0;
}
输出结果:
–myInt 值为: 1
myInt 值为: 1
2、重载后置递减运算符
#include <iostream>
using namespace std;
#include <iostream>
using namespace std;
class MyInteger {
// 将这个全局函数做友元,可以访问私有属性
friend ostream& operator<<(ostream& out, MyInteger myint);
public:
MyInteger() {
m_Num = 2;
}
//后置--
MyInteger operator--(int) {
//先保存当前本身的值
MyInteger tmp = *this;
//再后置--,然后让本身的值-1
m_Num--;
//再返回以前保存值
return tmp;
}
private:
int m_Num; //私有属性
};
//重载左移输出运算符<<
ostream& operator<<(ostream& out, MyInteger myint) {
out << myint.m_Num;
return out;
}
int main() {
//将自己定义的数据类型前置--后输出
// 1、重载左移输出运算符<<
// 2、重载递减运算符--
MyInteger myInt;
cout << "myInt-- 值为: " << myInt-- << endl;
cout << "myInt 值为: " << myInt << endl;
return 0;
}
输出结果:
myInt-- 值为: 2
myInt 值为: 1