#include <iostream>
#include <string>
using namespace std;
/************************************************************************
运算符递增运算符
/************************************************************************/
class Person{
//全局函数声明为该类的友元,可以访问该类的私有成员
friend ostream & operator<<(ostream &cout, Person &per);
public:
Person()
{
m_age = 0;
}
//成员函数重载前置++运算符,返回对象本身引用,用于链式编程
Person & operator++()
{
++m_age;
return *this;
}
//成员重载后置++运算符,先使用值,再后++,所以返回临时对象
//参数int代表占位符,用于区分前置和后置,标识为后置++
Person operator++(int)
{
Person per_tmp = *this;
m_age++;
return per_tmp;
}
private:
int m_age;
};
//使用全局函数重载<<运算符
ostream & operator<<(ostream &cout, Person &per)
{
cout<<per.m_age;
return cout;
}
void test1()
{
Person per1;
cout<<++per1<<endl; // 结果1
cout<<++(++per1)<<endl; // 结果3
}
void test2()
{
Person per2;
Person per3 = per2++;
//cout<<per2++<<endl; //报错?什么原因
cout<<per3<<endl;
cout<<per2<<endl;
}
int main()
{
//test1();
test2();
return 0;
}
C++ 重载前置和后置++
最新推荐文章于 2023-12-13 20:27:45 发布