Chương Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì?
class nhanvien {
double luong;
public:
void setLuong(double d) { luong = d; }
double getLuong() { return luong; }
void tangLuong(double d) { luong += d; }
} ;
int main() {
nhanvien A;
A.setLuong(700);
nhanvien B = A;
B.tangLuong(100);
cout << B.luong;
return 0;
}
Trả lời:
Đáp án đúng: D
Đoạn code C++ định nghĩa một lớp `nhanvien` có thuộc tính `luong` (lương) kiểu `double` và các phương thức `setLuong`, `getLuong`, `tangLuong` để thiết lập, lấy và tăng lương. Trong hàm `main`, một đối tượng `A` của lớp `nhanvien` được tạo và lương của nó được thiết lập là 700. Sau đó, một đối tượng `B` được tạo bằng cách gán `A` cho `B`. Đây là phép gán giá trị (copy), do đó `B` là một bản sao độc lập của `A`. Khi `B.tangLuong(100)` được gọi, lương của `B` tăng thêm 100, thành 800. Cuối cùng, `cout << B.luong;` in ra giá trị lương của `B`, là 800.
Như vậy, đáp án đúng là 800, vì B là một bản sao của A, và ta thao tác trên B sau khi B đã được gán bằng A.