Mình thử cái vd này gòi nè, nó sẽ cho thấy cái lỗi sai khi không tham chiếu :
Code:
complex a(55,66),b(88,99),c(1223.4563);
cout<<(a=b)=c;
cout<<a;
Với lớp số complex lun ! Khi đó bỏ dấu & với để dấu & sẽ có sự khác nhau !
Khi không có tham chiếu sẽ dẫn đến sai ! Vì sao ?
(a=b)=c;
khi đó b sẽ gán cho a và trả về a
, tức là a phài là 88 (mình lấy ví dụ in ra phần thực)
Sau đó gán c cho a, lúc đó a sẽ là 1223
Nhưng khi in a ra thì chỉ bằng 88 ! <-- Sai
Lí do là vì khi không có tham chiếu thì (a=b) không trả về a mà trã về 1 vùng nhớ khác ( mình thấy đc wa debug
) nên c gán cho (a=b) chứ không hề gán cho a !
Lúc này phải tham chiếu đến đối tượng bị gán thì mới cho ra kết wả đúng
( là thêm dấu & vô )
Cái này suy nghĩ gòi debug mất buổi tối mới ra
! hehe ! thanks rox_rook vì đã bỏ công giảng giải cho tui với bạn demontaihack nha ! Tui với bạn demontaihack đang học lập trình chung 1 lớp 