我编写了一个名为NumberS的类,只是为了演示。我重载了operator+运算符。当使用两个操作数应用该运算符时,它是OK的,但是当使用更多的操作数应用时会产生未定义的结果。以下是代码:
NumberS.h
在代码行number=number+"5" +"6";发生了未定义的结果,我期望结果为33,请帮助我找到正确的方法。
NumberS.h
#include <string>
#include <iostream>
using namespace std;
class NumberS
{
private:
long long number;
void assign(long long);
public:
NumberS();
NumberS(long long);
void operator=(string);
NumberS& operator+(string);
friend ostream& operator<<(ostream &os,NumberS numb)
{
os<<to_string(numb.number);
return os;
}
};
int main()
{
NumberS number(5);
number="10";
cout<<number<<"\n";//print out 10
number=number+"12";
cout<<number<<"\n";//print out 22
number=number+"5" +"6";//<----- wrong result occured here, I want it to be 33
cout<<number<<"\n";
getchar();
}
NumberS.cpp
#include "NumberS.h"
NumberS::NumberS()
{
number=0;
}
void NumberS::assign(long long numb)
{
number=numb;
}
NumberS::NumberS(long long numb)
{
assign(numb);
}
void NumberS::operator=(string str)
{
assign(stoi(str));
}
NumberS& NumberS::operator+(string str)
{
NumberS s;
s.operator=(str);
s.assign(number+s.number);
return s;
}
在代码行number=number+"5" +"6";发生了未定义的结果,我期望结果为33,请帮助我找到正确的方法。