#include <iostream>
#include <typeinfo>
#include <string>
#include <vector>
#include <iterator>
using namespace std;
template<typename T>
void _swap(T &a, T &b)
{
T tmp = T();
tmp = a;
a = b;
b = tmp;
}
class BigData
{
public:
//0初始化
BigData(){}
BigData(const char *src);
BigData(bool flag,int size);
BigData(int data);
BigData(vector<int>& src);
BigData(string &src);
BigData operator =(const BigData &data);
BigData(const BigData&data);
BigData(bool sign,const BigData&data);
bool operator >(const BigData &data) const;
bool operator <(const BigData &data) const;
bool operator ==(const BigData &data) const;
bool operator !=(const BigData &data) const;
bool operator >=(const BigData &data) const;
bool operator <=(const BigData &data) const;
BigData operator -(); //取反运算符
BigData operator+(const BigData &src);
BigData operator-(const BigData &src);
BigData operator *(const BigData &data);
BigData operator /(const BigData &data);
BigData operator +=(const BigData &daat);
BigData operator -=(const BigData &data);
BigData operator *=(const BigData &daat);
BigData operator /=(const BigData &data);
BigData operator ++(); //前置++
BigData operator --();
BigData operator ++(int);//后置++
BigData operator --(int);
void show()
{
if (_data.size() == 0)
{
cout <<"0"<<endl;
return;
}
if (!_sign)
{
cout << "-";
}
copy(_data.rbegin(), _data.rend(), ostream_iterator<int>(cout, ""));
cout << endl;
}
private:
vector<int> _data;
bool _sign;
};
BigData::BigData(const char *src)
{
_sign = true;
if (src[0] == '-')
{
_sign = false;
}
int len = strlen(src);
int min = 0;
if (!_sign)
{
min = 1;
}
for (int i = len - 1; i >= min; i--)
{
if (src[i] == '-' && i == 0)
{
_sign = false;
break;
}
_data.push_back(src[i] - '0');
}
}
BigData::BigData(int data)
{
if (data < 0)
{
_sign = false;
}
else
{
_sign = true;
}
int tmp = 0;
while (data)
{
tmp = data % 10;
大数加减乘除---C++运算符重载
最新推荐文章于 2022-10-03 16:18:32 发布
本文详细介绍了如何在C++中实现大数的加减乘除操作,通过运算符重载技术,使得大数运算更加便捷。内容涵盖了大数的表示、重载原理及具体实现示例。
摘要由CSDN通过智能技术生成