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 :smiley:

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 :smile:

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?