//BigNum.h
//作者:wzh190015
//日期:2015/12/07
#ifndef BIG_NUM_H
#define BIG_NUM_H
#include<deque>
using namespace std;
class BigNum //大数类
{
public:
//构造函数
BigNum (); //默认构造函数
BigNum ( int ); //构造函数
BigNum ( const BigNum& ); //拷贝构造函数
//重载运算符
//重载输入输出运算符
friend istream& operator>>( istream& , BigNum& ); //重载输入运算符
friend ostream& operator<<( ostream& , BigNum& ); //重载输出运算符
//重载算数运算符
//重载加号及相关运算符
BigNum operator+( BigNum& );
BigNum operator+( int );
friend BigNum operator+( int , BigNum& );
BigNum operator+( );
BigNum operator+=( BigNum& );
BigNum operator+=( int );
BigNum& operator++( );
BigNum operator++( int );
//重载减号及相关运算符
BigNum operator-( BigNum& );
BigNum operator-( int );
friend BigNum operator-( int , BigNum& );
BigNum operator-( );
BigNum operator-=( BigNum& );
BigNum operator-=( int );
BigNum& operator--( );
BigNum operator--( int );
//重载乘号及相关运算符
BigNum operator*( BigNum& );
BigNum operator*( int );
friend BigNum operator*( int , BigNum& );
BigNum operator*=( BigNum& );
BigNum operator*=( int );
//重载除号及相关运算符
BigNum operator/( BigNum& );
BigNum operator/( int );
friend BigNum operator/( int , BigNum& );
BigNum operator/=( BigNum& );
BigNum operator/=( int );
//重载取模运算符
BigNum operator%( BigNum& );
BigNum operator%( int );
friend BigNum operator%( int , BigNum& );
//乘方运算
friend BigNum power ( BigNum& , BigNum& );
friend BigNum power ( BigNum& , int );
friend BigNum power ( int , BigNum& );
//重载逻辑运算符
//重载小于及相关运算符
bool operator<( BigNum& );
bool operator<( int );
friend bool operator<( int , BigNum& );
bool operator<=( BigNum& );
bool operator<=( int );
friend bool operator<=( int , BigNum& );
//重载大于及相关运算符
bool operator>( BigNum& );
bool operator>( int );
friend bool operator>( int , BigNum& );
bool operator>=( BigNum& );
bool operator>=( int );
friend bool operator>=( int , BigNum& );
//重载等于及相关运算符
bool operator==( BigNum& );
bool operator==( int );
friend bool operator==( int , BigNum& );
bool operator!=( BigNum& );
bool operator!=( int );
friend bool operator!=( int , BigNum& );
private:
deque<int> num; //储存数字
bool positive; //储存符号
};
#endif
<pre name="code" class="cpp">//BigNum.cpp
//作者:wzh190015
//日期:2015/12/07
#include"BigNum.h"
#include<iostream>
#include<string>
#include<vector>
//构造函数
//默认构造函数
BigNum::BigNum ()
{
num.push_back ( 0 );
positive = true;
}
//构造函数
BigNum::BigNum ( int n )
{
positive = true;
char *cstr = new char [ 1000 ];
sprintf_s ( cstr , 1000 , "%d" , n );
string str ( cstr );
for ( auto &i : str )
{
if ( i =