c++的++运算符重载

来源:互联网 发布:淘宝网儿童羽绒服女款 编辑:程序博客网 时间:2024/06/05 21:15

成员函数实现

#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();}


0 0