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(); }
相关文章推荐
- C++ FAQ Lite[8]--引用(更新)
- 开发工具大比拚之Visual C++ vs. Delphi(三)
- 开发工具大比拚之Visual C++ vs. Delphi(二)
- 开发工具大比拚之Visual C++ vs. Delphi(一)
- Byte杂志C++调查报告
- 对今年内将出版的几本C++书的简评
- VC不是梦想,C++需要自由的心
- C++之父B. Stroustrup近期言论
- 用纯粹的C++编写COM组件
- C++中建立对象间消息连接的一种系统方法
- 在Delphi与C++之间实现函数与对象共享
- C/C++的思索 C++之父访谈录 [上帝的玩笑吗?]
- 突破C++的虚拟指针--C++程序的缓冲区溢出攻击
- C++: BIG5到GB
- 浅谈C++中运算符重载
- C++ FAQ Lite[13]--算符重载(新)
- C++ FAQ Lite[7]--类和对象(更新)
- C++ FAQ Lite[17]--异常和错误处理(更新)
- C++ FAQ Lite[9]--内联函数(更新)