代码什么的要哭了 2022-05-02 16:23 采纳率: 67.9%
浏览 54
已结题

operator< 小于符号运算符重载问题,输出结果总是反的是什么原因呢?

输出结果总是是1234,如果想输出1321 samsung message send,应该怎么改动啊,
只改动这一部分的代码


Mobile::Mobile(){}

Mobile::Mobile(char *t,int c, int n):Telephone(n)
{
    strcpy(type,t);
    cost = c;    
}

int operator<(Mobile &x1, Mobile &x2)
{
    if(x1.number < x2. number) return x2.number;
    else return x1.number;
}

源程序如下:


/*程序运行结果为:
1321    samsung message send*/

#include<string.h>
//StudybarCommentBegin
#include<iostream>
using namespace std;
//#include <iostream.h>
class Telephone
{
protected :
    int number;
public:
    Telephone()
    {number=1234;}
    Telephone(int n)
    {number=n;}
    void showNumber()
    {cout<<"my phone number is: "<<number<<endl;}
    void call()
    {cout<<"the phone is calling \n";}
};
class Mobile:public Telephone
{
    char *type = new char[20];
    int cost;
public:
    Mobile();
    Mobile(char *t,int c, int n);   //n-tel,c-cost,t-type 
    void message()
    {
        cout<<number<<"\t"<<type<<"\tmessage send\n ";
    }
    friend int operator<(Mobile &x1,Mobile &x2);
};

//StudybarCommentEnd


Mobile::Mobile(){}

Mobile::Mobile(char *t,int c, int n):Telephone(n)
{
    strcpy(type,t);
    cost = c;    
}

int operator<(Mobile &x1, Mobile &x2)
{
    if(x1.number < x2. number) return x2.number;
    else return x1.number;
}

//StudybarCommentBegin
int main()
{
    Mobile m1;
    Mobile m2("samsung",3500,1321);
    if(m1<m2)
        m1.message();
    else
        m2.message();
}    

//StudybarCommentEnd
  • 写回答

1条回答 默认 最新

  • SmallAntJ 2022-05-02 17:01
    关注

    重载函数需要返回True和False,而不是实际数值,否则if条件一直为True只会执行m1.message(),修改如下:

    int operator<(Mobile &x1, Mobile &x2)
    {
        if(x1.number < x2. number) return 0;
        else return 1;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月10日
  • 已采纳回答 5月2日
  • 创建了问题 5月2日

悬赏问题

  • ¥15 图示五个参数的模型校正是用什么方法做出来的。如何建立其他模型
  • ¥100 描述一下元器件的基本功能,pcba板的基本原理
  • ¥15 STM32无法向设备写入固件
  • ¥15 使用ESP8266连接阿里云出现问题
  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人