我有一个名为 BigInteger 的类,它支持大整数运算。我想在 BigInteger 和内置类型“int”之间实现混合操作。换句话说,我想支持以下陈述
BigInteger a(10);
a + 10;
10 + a;
我知道重载函数可以处理它
BigInteger operator +(const BigInteger&, const int&);
BigInteger operator +(const int&, const BigInteger&);
此外,我知道转换运算符只能处理它,
operator int();
但是上面的函数支持将 BigInteger 转换为 int 会丢失精度。我正在寻找一些比重载函数更简单并保持精度的方法。
感谢大家。
我试试看
#include <iostream>
using namespace std;
class BigInteger
{
public:
BigInteger(const int& i)
{
cout << "construct: " << i << endl;
val = i;
}
// BigInteger operator +(const BigInteger& tmp) const
// {
// return BigInteger(val + tmp.val);
// }
friend ostream& operator <<(ostream& os, const BigInteger& bi)
{
os << bi.val << endl;
return os;
}
int val;
};
BigInteger operator +(const BigInteger& a, const BigInteger& b)
{
return BigInteger(a.val + b.val);
}
int main(int argc, const char *argv[])
{
BigInteger a(12);
cout << (a + 123) << endl;
cout << (1231 + a) << endl;
return 0;
}
为什么我不能使用成员函数?这个怎么运作?