大数运算-------加法/减法
题目描述
编程(网易笔试题): 请实现以下类的方法,完成大数的加减法(可以使用STL容器)
// 大整数类型
class BigInt
{
public:
BigInt(string str) :strDigit(str){
}
private:
string strDigit; //使用字符串存储大整数
};
// 打印函数
ostream& operator<<(ostream &out, const BigInt &src);
// 大数加法
BigInt operator+(const BigInt &lhs, const BigInt &rhs);
// 大数减法
BigInt operator-(const BigInt &lhs, const BigInt &rhs);
int main()
{
BigInt int1("28937697857832167849697653231243");
BigInt int2("9785645649886874535428765");
cout << int1 + int2 << endl;
cout << int1 - int2 << endl;
return 0;
}
通过代码我们来详细理解解题的整个思路
构造大整数类
#include "stdafx.h"
#include <iostream>
#include <algorithm> // 泛型算法的头文件
#include <string>
#include <vector>
// 定义了一个大整数类
class BigInt
{
public:
BigInt(string str) :strDigit(str) {
}
private:
string strDigit; // 使用字符串存储大整数
//三个运算符重载函数要定义为友元函数
friend ostream& operator<<(ostream &out, const BigInt &src);
friend BigInt operator+(const BigInt &lhs, const BigInt &rhs);
friend BigInt operator-(const BigInt &lhs, const BigInt &rhs);
};
输出运算符<<的重载函数
// 打印函数
ostream