您的位置:首页 > 编程语言 > C语言/C++

c++的++运算符重载

2017-02-14 14:33 274 查看
成员函数实现

#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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: