Anh (Chị) hãy cho biết đoạn lệnh sau in ra kết quả nào?
class nhanvien {
double luong;
public:
void setLuong(double d) { luong = d; }
double getLuong() { return luong; } void
tangLuong(double d) { luong += d; }
} class quanly:public nhanvien
{ double phucap; public:
quanly() { setLuong(100);
phucap = getLuong() * 0.5
cout << phucap;
} } ; void main() {
quanly q; }
Trả lời:
Đáp án đúng: B
Đoạn code C++ này có một số lỗi.
1. **Lỗi cú pháp**: Dòng `} class quanly:public nhanvien` sai cú pháp. Cần phải có dấu chấm phẩy sau dấu ngoặc nhọn đóng của lớp `nhanvien`. Đúng ra phải là `}; class quanly: public nhanvien`.
2. **Thiếu thư viện**: Để sử dụng `cout`, bạn cần include thư viện `iostream`. Thiếu dòng `#include `
3. **`main` function**: Trong C++, hàm `main` nên trả về một giá trị kiểu `int`. Do đó, nên sử dụng `int main()` thay vì `void main()`.
Tuy nhiên, giả sử chúng ta bỏ qua các lỗi này và trình biên dịch có thể biên dịch được (ví dụ, bằng cách tự động thêm `#include ` và sửa lỗi cú pháp). Khi đó, chương trình sẽ thực hiện như sau:
* Một đối tượng `q` của lớp `quanly` được tạo.
* Hàm constructor của `quanly` được gọi.
* Trong constructor, `setLuong(100)` được gọi, gán `luong` bằng 100.
* `phucap` được tính bằng `getLuong() * 0.5`, tức là `100 * 0.5 = 50`.
* `cout << phucap` in giá trị của `phucap` ra màn hình.
Do có lỗi cú pháp, chương trình sẽ không biên dịch được và sẽ báo lỗi. Vì vậy, đáp án chính xác nhất là chương trình báo lỗi.