30/09/2018, 18:29
Hỏi về cách thức nạp chồng toán tử + trong c++
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 ạ…
Bài liên quan
Vì hàm nạp chồng có trả về kiểu dữ liệu là chính nó (kiểu PhanSo).
Nó sẽ hoạt động như sau:
Thế nên suy cho cùng, nó cũng giống
nhưng khi trả về giá trị thì tổng 1 bị hủy rồi… vậy thì kết quả của tổng 1 nó lưu zô biến nào để thực hiện tiếp phép tính tiếp theo ??? vẫn không hiểu lắm…