C++大数类

这是一个C++实现的大数类,包括了大数的构造函数、输入输出运算符、算术运算符(加减乘除取模)、逻辑运算符(比较运算)的重载,以及乘方运算。类中使用deque来存储数字,并通过bool类型变量保存正负号。
摘要由CSDN通过智能技术生成
//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 =
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值