JavaScript is required

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;

}

A.

700

B.
800
C.

0

D.
Lỗi biên dịch.
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.

Câu hỏi liên quan