em có đoạn code thế này…
‘’’
class PhanSo{
private:
int tuSo;
int mauSo;
public:
PhanSo(){
tuSo = 0;
mauSo = 1;
}
void setPhanSo(int tuSo, int mauSo){
this->tuSo = tuSo;
this->mauSo = mauSo;
}
PhanSo operator + (const PhanSo&);
friend ostream &operator<< (ostream &output, const PhanSo &v){
output << v.tuSo << "/" << v.mauSo;
return output;
}
};
int PhanSo::ucln(int a, int b){
if (a == 0) return b;
return ucln(b % a, a);
}
PhanSo PhanSo::toigian(PhanSo v){
int uc = ucln(v.mauSo, v.tuSo);
v.mauSo = v.mauSo / uc;
v.tuSo = v.tuSo / uc;
return v;
}
PhanSo PhanSo::operator+ (const PhanSo &v){
PhanSo tong;
tong.mauSo = this->mauSo * v.mauSo;
tong.tuSo = (this->tuSo * v.mauSo + v.tuSo * this->mauSo);
tong = toigian(tong);
return tong;
}
int main(){
PhanSo ps1;
PhanSo ps2;
ps1.setPhanSo(5, 3);
ps2.setPhanSo(7, 5);
PhanSo ps3;
ps3 = ps1 + ps2 + ps1 + ps2;
cout << ps3;
system("pause");
return 0;
}
‘’’
em không hiểu tại sao vẫn có thể cộng như thế này dc: ps3 = ps1 + ps2 + ps1 + ps2 em nghĩ nó không dc chứ… vì em trả về 1 biến tạm mà… khi return thì biến tạm bị hủy… thì làm sao có thể cộng vào tiếp dc… theo cách em nghĩ thì nó sẽ cộng từ phải sang trái từng đôi một sau đó gán vào ps3… không biết em nghĩ như vậy là đúng hay sai… mong các anh giúp ạ…
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?