C++已经为我们提供了前置++ 和 后置++ 的方法,但是这只能用于内置的数据类型。当我们要前置++ 或 后置++ 我们自定义的数据类型的时候,就要重写前置++ 或 后置++ 了;除此之外,若要输出自定义类型中的数据,还有可能要重写输出函数 “<<”。
下面提供重写前置++、后置++ 以及输出运算符“<<”的代码:
//前置++、后置++ 的重载
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
class Person
{
friend ostream& operator<<(ostream& cout, Person& p1);
//friend Person& operator++(Person& p);
public:
Person()
{
m_A = 10;
}
Person& operator++() //前置++,返回引用
{
this->m_A++;
return *this;
}
Person operator++(int) //后置++,返回值;加上int是为了区分前置和后置重载 —— 做占位使用!
{
Person tmp = *this; //重载后置++,需要保存它的初始值
this->m_A++;
return tmp;
}
private:
int m_A;
};
//Person& operator++(Person& p)
//{
// p.m_A++;
// return p;
//}
//重载 << 运算符
ostream& operator<<(ostream& cout, Person& p1)
{
cout << p1.m_A;
return cout;
}
void test()
{
Person p;
cout << p<< endl; //10
cout << typeid(p).name() << endl; //Class Person
Person pp = p++; //p=11;pp=10
cout << pp << endl;
Person ppp = ++p; ///ppp=12
cout << ppp << endl;
}
int main()
{
test();
system("pause");
return 0;
}