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

有不足的地方希望大家可以指出,我会虚心改正,谢谢大家~


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。