这里要注意的是前置递增和后置递增,而且着重要看返回的是引用,还是新建的类。
这里还重载了左运算符,就是<<,这样就可以输出我们自定义的类了。
#include <iostream>
using namespace std;
class MyInteger
{
friend ostream& operator<< (ostream & cout, MyInteger & myint);
public:
MyInteger()
{
m_Num = 0;
}
// 重载前置递增
// 下面的方法,++是在左边,为什么呢,因为这个方法是定义在类里面的,
// 在类里面的话,传入的数是在运算符左边,本身是在运算符右边
MyInteger& operator++ ()
{
m_Num++;
return *this;
}
// 重载后置递增
// 下面括号里面的int代表的是占位参数,可以用于区分前置和后置传递,不能写入double,float等等。
// 后置递增,应该是返回当前的结果,但是传入的参数自身要加1
MyInteger& operator++(int)
{
MyInteger myint;
myint.m_Num = this->m_Num;
this->m_Num++;
return myint;
}
private:
int m_Num;
};
// 重载左运算符
// 这里为什么返回的是引用,说明这个函数返回的是自身,而不是再新建一个新的类
ostream& operator<< (ostream &cout,MyInteger & myint)
{
cout << myint.m_Num;
return cout;
}
void test()
{
MyInteger myint;
cout << ++myint << endl;
cout << myint << endl;
}
void test01()
{
MyInteger myint;
cout << myint++ << endl;
cout << myint << endl;
}
int main()
{
test01();
test();
return 0;
};