成员函数实现
#include <iostream>
using namespace std;
class AA
{
private:
int c;
public:
AA(int x1)
{
c=x1; //定义前缀和后缀的唯一区别是定义的括号里后缀多了一个int。
}
AA operator++(int) //后缀
{
AA s=*this; //定义一个对象,这个对象等于传进来的对象值;
this->c=this->c+1; //利用this指针对其自身相加;
return s; //本身this变了, 对象s却记录了原始的数据,所以能实现先返回最原始的值,
//而本身却已经进行加一了。
}
AA operator++() //前缀
{
this->c=this->c+1; //直接进行加一就行了。
return *this; //返回加一玩的值。
}
void show()
{
cout<<c<<endl;
}
};
int main()
{
int g;
cout<<"原数字为:";
cin>>g;
AA a(g);
a++.show();
a.show();
(++a).show();
a.show();
}
友元函数实现
#include <iostream>
using namespace std;
class AA
{
private:
int c;
public:
AA(){}
AA(int x1)
{
c=x1;
}
friend AA operator++(AA &v,int); //后缀
friend AA operator++(AA &b); //前缀
void show()
{
cout<<c<<endl;
}
};
AA operator++(AA &v,int)
{
AA s=v; //定义一个对象,这个对象等于传进来的对象值;
v.c=v.c+1; //利用this指针对其自身相加;
return s; //本身this变了, 对象s却记录了原始的数据,所以能实现先返回最原始的值,
//而本身却已经进行加一了。
}
AA operator++(AA &b) //前缀
{
b.c=b.c+1; //直接进行加一就行了。
return b; //返回加一玩的值。
}
int main()
{
int g;
cout<<"原数字为:";
cin>>g;
AA a(g);
a++.show();
a.show();
(++a).show();
a.show();
}