m0_73565969 2023-03-25 15:33 采纳率: 53.8%
浏览 15
已结题

为什么在重载<<中字符串会改变后面的数字大小


#include <iostream>
using namespace std;

class rational {
private:
    long denom, den;   // denom is the numerator 
    //and den is the denominator
public:
    rational(int up = 0, int down = 1);
    bool operator<(rational r) const;
    bool operator<=(rational r) const;
    bool operator == (rational r) const;
    bool operator!=(rational r) const;
    rational& operator-() ;
    friend ostream& operator<<(ostream& out, const rational& r);// Add output operator << overload here
};
rational::rational(int up, int down) {
    denom = up;
    den = down;
}
bool rational::operator<(rational r) const {
    return (this->denom / this->den < r.denom / r.den);
}
bool rational::operator<=(rational r) const {
    return (this->denom / this->den <= r.denom / r.den);
}
bool rational::operator==(rational r) const {
    return (this->denom / this->den == r.denom / r.den);
}
bool rational::operator!=(rational r) const {
    return (this->denom / this->den != r.denom / r.den);
}
rational& rational::operator-()  {
    rational a(-denom, den);
    return a;
}
ostream& operator<<(ostream& out, const rational& r) {
    out << r.denom << "/" << r.den;
    return out;
}
int main() {
    rational r1(1, 2);
    rational r2(1, 3);
    cout << r1 << " " << r2 << endl;
    cout << (r1 < r2) << endl;
    cout << (r1 <= r2) << endl;
    cout << (r1 != r2) << endl;
    cout << -r1 << endl;
}

如图,运行到第38行时结果与预期不符

img

img

把“/”改成‘/’时就好了

img

img

后面又试了一下,发现只要是一个字符串都会让后面的数字结果出错

img

img


这是为什么

  • 写回答

2条回答 默认 最新

  • threenewbee 2023-03-25 16:24
    关注

    rational& rational::operator-()

    不要返回堆栈上的临时变量,而是这么写

    rational& rational::operator-() {
        rational *a = new rational(-denom, den);
        return *a;
    }
    
    
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月7日
  • 创建了问题 3月25日

悬赏问题

  • ¥15 本地测试网站127.0.0.1 已拒绝连接,如何解决?(标签-ubuntu)
  • ¥50 Qt在release捕获异常并跟踪堆栈(有Demo,跑一下环境再回答)
  • ¥30 python,LLM 文本提炼
  • ¥15 关于将inet引入的相关问题
  • ¥15 关于一个倒计时的操作和显示设计
  • ¥15 提问STK的问题,哪位航天领域的同学会啊
  • ¥15 苹果系统的mac m1芯片的笔记本使用ce修改器使用不了
  • ¥15 单相逆变的电压电流双闭环中进行低通滤波PID算法改进
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 如何卸载arcgis 10.1 data reviewer for desktop