This is pacific question. The implementation of the class LargeInt will use a dynamic physical structure to store the individual digits of an integer, and will provide some basic I/O and arithmetic operations that can be performed on integers.
In particular, the class should include:
- A default constructor
- An operator function to overload the operator +
- An operator function to overload the operator ==
- An operator function to overload the operator <<
- An operator function to overload the operator >>
Note 1: since the LargeInt class does not contain pointers, there is no need for a copy constructor or a destructor.
#include "targetver.h"
using namespace std;
class LargeInt
{
private:
  char datain[200];
  int databit[200];
  int len;
  int overflow;
  LargeInt(char *x, int inlen)
  {
    int i = 0;
    int j = inlen - 1;
    len = inlen;
    overflow = 0;
    for (i = 0; i < 200; i++)
    {
      databit[i] = 0;
      datain[i] = '\0';
    }
    for (i = 0; i < len; i++)
    {
      datain[i] = x[j];
      j--;
    }
  }
  ~LargeInt();
  void GetDataBit()
  {
    int i = 0;
    for (i; i < len; i++)
      databit[i] = datain[i] - 48;
  }
public:
  LargeInt& operator+(LargeInt& data);
  bool operator==(LargeInt& data);
  LargeInt& operator>>(int x);
  LargeInt& operator<<(int x);
};
bool LargeInt::operator==(LargeInt& data)
{
  if (this->len != data.len)
    return false;
  else
  {
    for (int i = 0; i < 200; i++)
    {
      if (this->databit[i] == data.databit[i])
        continue;
      else
        return false;
    }
    return true;
  }
}
LargeInt& LargeInt::operator+(LargeInt& data)
{
  LargeInt t("0", 0);
  int addlen;
  if (this->len > data.len)
    addlen = this->len;
  else
    addlen = data.len;
  for (int i = 0; i < addlen; i--)
  {
    t.databit[i] = (data.databit[i] + this->databit[i] + t.overflow) % 10;
    if ((data.databit[i] + this->databit[i] + t.overflow) >= 10)
      t.overflow = 1;
  }
  t.len = addlen;
  for (int i = 0; i < addlen; i++)
  {
    t.datain[i] = t.databit[i] + 48;
  }
  return t;
}
when I build it, it has a error like this
Warning 1 warning C4172: returning address of local variable or temporary.
 
     
    