求教c++运算符重载实现大数的运算
求教啊!#include <iostream>
#include <string>
#include <fstream>
using namespace std;
class LongInt
{
public:
string num;
int len;
public:
friend LongInt operator+(LongInt c1,LongInt c2);
friend LongInt operator-(LongInt c1,LongInt c2);
friend LongInt operator*(LongInt c1,LongInt c2);
friend LongInt operator/(LongInt c1,LongInt c2);
LongInt();
void input();
void output();
};
LongInt::LongInt()
{
num[0]=0;len=0;
}
void LongInt::input()
{
cin>>num;
len=num.size();
}
LongInt operator+(LongInt c1, LongInt c2)
{
LongInt c;
for(int i=0;i<c1.len/2;i++)
{
char t;
t=c1.num[i];c1.num[i]=c1.num[c1.len-1-i];c1.num[c1.len-1-i]=t;
}
for(int i=0;i<c2.len/2;i++)
{
char t;
t=c2.num[i];c2.num[i]=c2.num[c2.len-1-i];c2.num[c2.len-1-i]=t;
}
int max;
if(c1.len>c2.len)
{
max=c1.len;
for(int i=c2.len;i<=c1.len-1;i++)
{
c2.num[i]='0';
}
}
else
{
max=c2.len;
for(int i=c1.len;i<=c2.len-1;i++)
{
c1.num[i]='0';
}
}
int no=0;
int i;
for(i=0;i<max;i++)
{
c.num[i]=c1.num[i]+c2.num[i]-'0'+no;
if(c.num[i]>'9')
{
no=1;
c.num[i]=c.num[i]-10;
}
else
{
no=0;
}
}
if(no==1)
{
for(int i=max;i<max+1;i++)
{c.num[i]='1';}
}
for(int i=max+1;i>=0;i--)
{
cout<<c.num[i];
}
}
LongInt operator-(LongInt c1, LongInt c2)
{
LongInt c;
for(int i=0;i<c1.len/2;i++)
{
char t;
t=c1.num[i];c1.num[i]=c1.num[c1.len-1-i];c1.num[c1.len-1-i]=t;
}
for(int i=0;i<c2.len/2;i++)
{
char t;
t=c2.num[i];c2.num[i]=c2.num[c2.len-1-i];c2.num[c2.len-1-i]=t;
}
int max;
if(c1.len>c2.len)
{
max=c1.len;
for(int i=c2.len;i<=c1.len-1;i++)
{
c2.num[i]='0';
}
}
else
{
max=c2.len;
for(int i=c1.len;i<=c2.len-1;i++)
{
c1.num[i]='0';
}
}
int no=0;
int i;
for(i=0;i<max;i++)
{
c.num[i]=c1.num[i]-c2.num[i]+'0'-no;
if(c.num[i]<'0')
{
no=1;
c.num[i]=c.num[i]+10;
}
else
{
no=0;
}
}
/*if(no==1)
{
for(int i=max;i<max+1;i++)
{c.num[i]='1';}
}*/
for(int i=max+1;i>=0;i--)
{
cout<<c.num[i];
}
}
int main()
{
LongInt m,m1,m2;
cout<<"请输入一个数:";
m1.input();
cout<<"请输入另一个数:";
m2.input();
/*cout<<"两数之和为:";
m=m1+m2;*/
cout<<"两数之差为:";
m=m1-m2;
return 1;
}
运行时会报错!