Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì?
class tinh {
public:
int a;
tinh() {} tinh(int i)
{a = i;} tinh
operator+(tinh t) {
tinh tmp;
tmp.a = a % t.a;
return tmp
}
} ;
void main() {
tinh t1(1),
t2(3),t3;
t3 = t1 + t2;
cout << t.a;
}
Trả lời:
Đáp án đúng: D
Đoạn chương trình C++ được cung cấp có một số lỗi.
1. **Lỗi cú pháp trong khai báo hàm `operator+`**: Dòng `return tmp` nằm ngoài hàm `operator+`, gây ra lỗi biên dịch.
2. **Lỗi sử dụng biến `t`**: Trong hàm `main`, dòng `cout << t.a;` sử dụng biến `t` chưa được khai báo hoặc khởi tạo. Biến đúng cần dùng là `t3`.
3. **Phép chia lấy dư cho 0**: Nếu `t.a` bằng 0, phép toán `a % t.a` sẽ gây ra lỗi chia cho 0.
Do có các lỗi trên, chương trình sẽ không biên dịch được. Vì vậy, đáp án đúng là 'D. Lỗi biên dịch'.