用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();
}
原文:http://blog.csdn.net/qaz3171210/article/details/46403079