30/09/2018, 18:35

Thắc mắc về toán tử C++

Trường hợp 1. Không có kiểu trả về

void PhanSo::operator +=(const PhanSo &a)
{
	tu = tu*a.mau + mau*a.tu;
	mau = mau*a.mau;
}

Trường hợp 2. Có kiểu trả về
PhanSo& PhanSo::operator +=(const PhanSo &a)
{
	tu = tu*a.mau + mau*a.tu;
	mau = mau*a.mau;
	return *this;
}

Theo mình nghĩ thì toán tử += đầu cần giá trị trả về do nó thay đổi trực tiếp this. Nhưng khi đọc sách thì mình thấy đa số lại viết theo TH2. Mong các bạn giải đáp giùm mình. Cảm ơn

Nguyen Hai viết 20:38 ngày 30/09/2018

Viết theo trường hợp hai để đúng cho các trường hợp, đặc biệt là trường hợp này:
PhanSo a, b, c;
a += b += c;
Nếu dùng trường hợp 1 thì biểu thức trên sẽ không đúng

Bài liên quan
0