用C++编写Int函数
用C++编写Int函数来实现基本运算如下:
#include <iostream> using namespace std; class Int { public: Int(int i=0):m_i(i) {} ~Int() {} Int& operator++() //前置++ { m_i++; return *this; } Int operator++(int) //后置++ { //Int tmp(m_i); //m_i++; //return tmp; return Int(m_i++); } Int& operator--() //前置-- { m_i--; return *this; } Int operator--(int) //后置-- { return Int(m_i--); } Int operator-() // -a { return -m_i; } Int operator+() //+a { return +m_i; } Int operator+(const Int &I) //m_i+I.m_i { return m_i + I.m_i; } Int operator-(const Int &I) //m_i-I.m_i { return m_i - I.m_i; } Int operator*(const Int &I) //m_i*I.m_i { return m_i * I.m_i; } Int operator/(const Int &I) //m_i/I.m_i { return m_i / I.m_i; } Int operator+=(const Int &I) //m_i+=I.m_i { m_i = m_i + I.m_i; return *this; } Int operator+=(const int &x) //m_i+=x { m_i = m_i + x; return *this; } Int operator-=(const Int &I) //m_i-=I.m_i { m_i = m_i - I.m_i; return *this; } Int operator-=(const int &x) //m_i-=x { m_i = m_i - x; return *this; } Int operator*=(const Int &I) //m_i*=I.m_i { m_i = m_i * I.m_i; return *this; } Int operator*=(const int &x) //m_i*=x { m_i = m_i * x; return *this; } Int operator/=(const Int &I) //m_i/=I.m_i { m_i = m_i / I.m_i; return *this; } Int operator/=(const int &x) //m_i/=x { m_i = m_i / x; return *this; } Int operator%(const Int &I) //m_i%I.m_i { return m_i % I.m_i; } Int operator%(const int &x) //m_i%x { return m_i % x; } Int operator^(const Int &I) //m_i^I.m_i { return m_i ^ I.m_i; } Int operator^(const int &x) //m_i^x { return m_i ^ x; } Int operator|(const Int &I) //m_i|I.m_i { return m_i | I.m_i; } Int operator&(const Int &I) //m_i&I.m_i { return m_i & I.m_i; } Int operator!() //!m_i { return !m_i; } Int operator~() //~m_i { return ~m_i; } bool operator==(const Int &I) //m_i == I.m_i { if(m_i == I.m_i) { return true; } else { return false; } } bool operator!=(const Int &I) //m_i != I.m_i { if(m_i != I.m_i) { return true; } else { return false; } } bool operator>(const Int &I) //m_i > I.m_i { if(m_i > I.m_i) { return true; } else { return false; } } bool operator<(const Int &I) //m_i < I.m_i { if(m_i < I.m_i) { return true; } else { return false; } } bool operator>=(const Int &I) //m_i >= I.m_i { if(m_i >= I.m_i) { return true; } else { return false; } } bool operator<=(const Int &I) //m_i <= I.m_i { if(m_i <= I.m_i) { return true; } else { return false; } } Int operator>>(const Int &I) //m_i>>I.m_i { return m_i>>I.m_i; } Int operator<<(const Int &I) //m_i<<I.m_i { return m_i<<I.m_i; } Int operator>>=(const Int &I) //m_i>>=I.m_i { m_i = m_i>>I.m_i; return m_i; } Int operator<<=(const Int &I) //m_i<<=I.m_i { m_i = m_i<<I.m_i; return m_i; } void Show() //显示 { cout<<m_i<<endl; } private: //私有成员 int m_i; }; void main() //测试函数 { Int i(5); Int j(5); Int x ; x = ++i; x.Show(); x = i++; x.Show(); x = --j; x.Show(); x =j--; x.Show(); Int n; n = 6; n = +n; n.Show(); n = -n; n.Show(); Int i1(4); Int j1(2); Int m; m = i1+j1; m.Show(); m = i1-j1; m.Show(); m = i1*j1; m.Show(); m = i1/j1; m.Show(); int q = 2; Int i2(2); Int j2(1); i2 += j2; i2.Show(); i2 += q; i2.Show(); i2 -= j2; i2.Show(); i2 -= q; i2.Show(); i2 *= j2; i2.Show(); i2 *= q; i2.Show(); i2 /= j2; i2.Show(); i2 /= q; i2.Show(); Int a; a = i1 % j1; a.Show(); a = i1 % q; a.Show(); a = i1 & j1; a.Show(); a = i1 | j1; a.Show(); a = i1 ^ j1; a.Show(); a = i1 ^ q; a.Show(); a = ~i1; a.Show(); a = !i1; a.Show(); if(i1 != j1) { cout<<"i1不等于j1"<<endl; } else if(i1 > j1) { cout<<"i1大于j1"<<endl; } else if(i1 < j1) { cout<<"i1小于j1"<<endl; } else { cout<<"i1等于j1"<<endl; } if(i1 >= j1) { cout<<"i1大于等于j1"<<endl; } else if(i1 <= j1) { cout<<"i1小于等于j1"<<endl; } Int s; s = i2<<j2; s.Show(); s = i2>>j2; s.Show(); i2 <<= j2; i2.Show(); i2 >>= j2; i2.Show(); }
有不足的地方希望大家可以指出,我会虚心改正,谢谢大家~
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。