++前置
#include<iostream>
#include<string>
using namespace std;
class CGirl{
public:
string m_name;
int m_ranking;
CGirl()
{
m_name="西施";
m_ranking=5;
}
void show()
{
cout<<"姓名"<<m_name<<",排名:"<<m_ranking<<endl;
}
CGirl& operator++()
{
m_ranking++;
return *this;
}
};
int main()
{
CGirl g1;
int ii=0;
++(++(++ii));
++(++(++g1));//这样写的话要让重载函数返回对象的引用就可以了
g1.show() ;
}
给重载函数增加一个int形参,它就成了++后置的重载函数。对++前置来说写成这样++(++(++g1))
是有必要的需要嵌套,在表达式中前置的自增可以嵌套,但是后置的自增不能只能写成`g1++
++后置的重载要在函数中先创建一个临时对象,保存对象的当前状态,++之后返回临时对象,函数的返回值不能是引用,成员函数中的临时对象不能引用
#include<iostream>
#include<string>
using namespace std;
class CGirl{
public:
string m_name;
int m_ranking;
CGirl()
{
m_name="西施";
m_ranking=5;
}
void show()
{
cout<<"姓名"<<m_name<<",排名:"<<m_ranking<<endl;
}
CGirl& operator++(int)
{
CGirl tmp =*this;
m_ranking++;
return tmp;
}
};
int main()
{
CGirl g1;
CGirl g4=g1++;
cout<<"g4.m_ranking=" <<g4.m_ranking<<endl<<"g2.m_ranking="<<g1.m_ranking;
}