重载操作符输出

Overloading Operator output

本文关键字:输出 操作符 重载      更新时间:2023-10-16

大家好,我对c++相当陌生,虽然我有一些Java基础知识。

我有这个运算符<<:

std::ostream& operator<<(std::ostream& out, Rational& r) {
    int a;
    int b;
    int c;
    int d;
    b = r.n_;
    c = r.d_;
    if (c >= b) {
        a = (b / c);
        d = (b % c);
        r.n_ = d;}

    return out << r.n_ << '/' << r.d_;
    }

基本上我想做的是;如果我想输出的分数是一个假分数,我想在输出之前把它转换成一个混合数格式。我已经写了if语句来计算混合数,但我很难弄清楚如何使用<<操作符,因为它只能接受两个参数。如果有办法(不需要编辑类实例变量)。

(Rational类有两个实例变量Numerator和Denominator)

任何帮助或想法将非常感激,提前感谢。^ ^

提前感谢。

我真的不明白你所说的"<<算子只能取两个参数"是什么意思。看起来你想做这样的事情:

std::ostream& operator<<(std::ostream& out, Rational& r)
{
    if (r.n_ > r.d_)
    {
        int whole = r.n_ / r.d_;
        int numerator = r.n_ % r.d_;
        return out << whole << ' ' << numerator << '/' << r.d_;
    }
    return out << r.n_ << '/' << r.d_;
}

我认为这看起来很简单。也许我没听清你的问题?