C++ 运算符重载
来源:互联网 发布:10型军用巧克力淘宝 编辑:程序博客网 时间:2024/05/21 18:35
C++实现运算符重载
#include <iostream>using namespace std;//#define SHOWclass Int{ friend bool operator>(const Int& x,const Int& y); //friend int operator>(const Int& x,const Int& y); friend bool operator<(const Int& x,const Int& y); friend bool operator==(const Int& x,const Int& y); friend Int operator<<(const Int& x,const Int& y); friend Int operator>>(const Int& x,const Int& y); friend Int& operator+=(Int& x,const Int& y); friend Int& operator-=(Int& x,const Int& y); friend Int& operator*=(Int& x,const Int& y); friend Int& operator/=(Int& x,const Int& y); friend ostream& operator<<(ostream& out,const Int& x); //重载流插入运算符<< friend istream& operator>>(istream& input,const Int& x);//重载流提取运算符>>public: Int(int x=0):i(x) { #ifdef SHOW cout<<"Creat Int Obj : "<<this<<endl; #endif // SHOW } Int(const Int& x) { #ifdef SHOW cout<<"Copy Int Obj : "<<this<<endl; #endif // SHOW } Int& operator=(const Int& x) { #ifdef SHOW cout<<"Assign,"<<this<<" : "<<&x<<endl; #endif // SHOW if(this != &x) { i = x.i; } return *this; } ~Int() { #ifdef SHOW cout<<"Free Int Obj : "<<this<<endl; #endif // SHOW } const Int operator+(const Int& x); const Int operator-(const Int& x); const Int operator*(const Int& x); const Int operator/(const Int& x); const Int operator%(const Int& x); const Int operator&(const Int& x); const Int operator|(const Int& x); const Int operator^(const Int& x); const Int operator~(); const Int operator!(); const Int operator++(); //前置++运算符 const Int operator++(int);//后置++运算符 const Int operator--(); //前置--运算符 const Int operator--(int);//后置--运算符 const Int operator+=(const Int& x); const Int operator-=(const Int& x);private: int i;};ostream& operator<<(ostream& out,const Int& x){ out<<x.i; return out;}istream& operator>>(istream& input,const Int& x){ input>>x.i; return input;}bool operator>(const Int& x,const Int& y){ if(x.i>y.i) { return true; } else { return false; }}int operator>(const Int& x ,const Int& y){ return x.i>y.i;}bool operator<(const Int& x,const Int& y){ if(x.i<y.i) { return true; } else { return false; }}bool operator==(const Int& x,const Int& y){ if(x.i==y.i) { return true; } else { return false; }}Int operator<<(const Int& x,const Int& y){ return (x.i<<y.i);}Int operator>>(const Int& x,const Int& y){ return (x.i>>y.i);}Int& operator+=(Int& x,const Int& y){ x.i += y.i; return x;}Int& operator-=(Int& x,const Int& y){ x.i -= y.i; return x;}Int& operator*=(Int& x,const Int& y){ x.i *= y.i; return x;}Int& operator/=(Int& x,const Int& y){ x.i /= y.i; return x;}const Int Int::operator+(const Int& x){ return (i+x.i);}const Int Int::operator-(const Int& x){ return (i-x.i);}const Int Int::operator*(const Int& x){ return (i*x.i);}const Int Int::operator/(const Int& x){ return (i/x.i);}const Int Int::operator%(const Int& x){ return (i%x.i);}const Int Int::operator&(const Int& x){ return (i&x.i);}const Int Int::operator|(const Int& x){ return (i|x.i);}const Int Int::operator^(const Int& x){ return (i^x.i);}const Int Int::operator~(){ return ~i;}const Int Int::operator!(){ return !i;}const Int Int::operator++(){ ++ i; return *this;}const Int Int::operator++(int){ Int tmp(*this); i ++; return tmp;}const Int Int::operator--(){ -- i; return *this;}const Int Int::operator--(int){ Int tmp(*this); i --; return tmp;}int main(){ Int t(10),t1(9),t2(3); t = t1 + t2; cout<<t<<endl; t = t1 - t2; cout<<t<<endl; t = t1 * t2; cout<<t<<endl; t = t1 / t2; cout<<t<<endl; t = t1 % t2; cout<<t<<endl; ++ t; cout<<t<<endl; t ++; cout<<t<<endl; -- t; cout<<t<<endl; t --; cout<<t<<endl; t = t1>t2; cout<<t<<endl; t = t1<t2; cout<<t<<endl; t = t1==t2; cout<<t<<endl; t = t1&t2; cout<<t<<endl; t = t1|t2; cout<<t<<endl; t = t1^t2; cout<<t<<endl; t = ~t1; cout<<t<<endl; t= !t1; cout<<t<<endl; t = t1<<t2; cout<<t<<endl; t = t1>>t2; cout<<t<<endl; t += t1; cout<<t<<endl; t -= t1; cout<<t<<endl; t *= t1; cout<<t<<endl; t /= t1; cout<<t<<endl; return 0;}
0 0
- C++-运算符重载
- [C++]重载运算符
- C#:运算符重载
- c++-++运算符重载
- C++:重载运算符
- 运算符重载(C++)
- [c++]运算符重载
- 【C++】运算符重载
- C++--------------------------------------------运算符重载
- C#:运算符重载
- C++:运算符重载
- C++:运算符重载
- C#:运算符重载
- [C++]运算符重载
- 【c++】运算符重载
- C++:运算符重载
- C#:运算符重载
- C++:运算符重载
- 利用栈的基本操作编写一个行编辑程序,当前一个字符有误时,输入#消除,当前面一行有误时,输入@消除前面行的字符序列
- Auto DOP and Parallel Statement Queuing
- Java数据结构-HashMap(八)
- Linux下的压缩解压命令
- HDU ACM 4349 Xiao Ming's Hope ->lucas定理的推到
- C++ 运算符重载
- Linux常用命令大全
- 2014年5月TOJ月赛
- WireShark 过滤语法
- CreateFile函数祥解
- Apache与Nginx的优缺点比较
- sphinx安装
- 计算器的实现
- 希网3322域名更新脚本(Python)