我正在C++中的分数类上工作,并在新类中定义了frac和int的加法,但是它要求它们按以下顺序显示:frac + int。有没有办法在Int类型中重载+,以便我们有一个接受frac并输出frac的函数?还是有办法在新类中颠倒顺序?
我已经定义了frac + frac和frac + = frac运算符。有问题的两个功能是:
frac operator+=(int b)
{
frac c = { n + b*d, d };
return c;
}
frac operator+(int b)
{
frac c = *this;
frac d = { b };
c += d;
return c;
}
像这样的东西:
frac int::operator+=(frac& b)
{
frac c = { this * b.den() + b.num(), b.den() };
return c;
}
但我不确定如何实际完成此操作。
来自以下问题的代码:
frac &operator+=(frac b)
{
frac c = { n * b.den() + b.num() * d, d * b.den() };
n = c.num();
d = c.den();
return *this;
}
frac operator+(int a, frac b)
{
return frac{ a } += b;
}
最佳答案
好吧,因为没有int
类,所以您无法执行建议的操作,但最简单的方法是在类内部声明一个这样的函数
friend frac operator+(int a, frac b);
这样,当使用其他顺序时将调用此函数。编辑:您需要使用
friend
说明符,因为该函数不在类中,对此我忘了。关于c++ - C++运算符重载int类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24593084/