gpt4 book ai didi

C++ 重载 + 运算符不起作用

转载 作者:行者123 更新时间:2023-11-30 01:26:38 25 4
gpt4 key购买 nike

大家好,看看我的代码,我正在尝试编写一个程序,要求您按克输入第一个值,第二个值是千克,然后通过重载 + 运算符将千克转换为克,但它不起作用为什么

#include <iostream>
using namespace std;
class ADD{
private:
int Fval;
int Sval;
public:
ADD(){
cout << "WELCOME TO OUR PROGRAM"<<endl<<"PLEASE ENTER THE FIRST VALUE BY GRAMS :";
cin >> Fval;
cout << "PLEASE ENTER THE SECOND VALUE BY KILOGRAMS :"; cin >> Sval;
}
ADD operator+(ADD& add){
add.Sval *= 1000;
return add;
}
int plus(){
return Fval+Sval;
}
};
int main(){
ADD a1;
cout << "THE TOTAL VALUE = " << a1.plus() << " GRAMS";
}

没有影响看输出

WELCOME TO OUR PROGRAM
PLEASE ENTER THE FIRST VALUE BY GRAMS :2
PLEASE ENTER THE SECOND VALUE BY KILOGRAMS :3
THE TOTAL VALUE = 5 GRAMS

这意味着 + 运算符不会将 3 乘以 1000为什么??

最佳答案

那是因为你没有调用 operator +

你正在调用 ADD::plus():

int plus(){
return Fval+Sval;
}

FvalSval 是整数,您要将它们相加。就这么简单。

编辑:

您的代码有问题。

ADD operator+(ADD& add){
add.Sval *= 1000;
return add;
}

operator + 内的乘法?真的吗?另外,并不是说您正在修改参数,您不应该这样做。这不直观。如果您真的必须这样做:

ADD operator+(const ADD& add){
ADD ret;
ret.Sval = add.Sval * 1000;
return ret;
}

关于C++ 重载 + 运算符不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10030031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com