我最近开始使用Operator Overloading。我想用随机整数值添加名为Player
的类的值,并将值存储在另一个Player
类对象中。这些值看起来在重载函数内部发生了变化,但是一旦我返回类值就消失了。有人能告诉我这里哪里出错吗?
#include <iostream>
using namespace std;
class Player{
int runs,reps;
public:
Player(int r,int rep){
runs = r;
reps = rep;
}
Player &operator+(int i){
Player p(1,1);
// cout<<"hi"<<this->runs<<endl;
p.runs = this->runs + i;
// cout<<"hi"<<p.runs<<endl;
p.reps = this->reps + i;
// cout<<"hi"<<p.reps<<endl;
return p;
}
void showme(){
cout<<runs<<"\t"<<reps<<"\t"<<endl;
}
};
int main() {
Player t(23,34),p(1,1);
int i;
i = 3;
p = t + i;
p.showme();
return 0;
}
答案 0 :(得分:3)
你可以做
Player& operator+=(int i) {
runs += i;
reps += i;
return *this;
}
friend Player operator+(Player p, int i) {
return p += i;
}