What do you think is the outcome of calling a redefined non-virtual function using a base-class pointer?
Trả lời:
Đáp án đúng: B
Trong C++, khi gọi một hàm không ảo (non-virtual) đã được định nghĩa lại (redefined) trong lớp con thông qua con trỏ hoặc tham chiếu kiểu lớp cha, phiên bản hàm của lớp cha sẽ luôn được gọi. Điều này là do trình biên dịch (compiler) xác định hàm nào sẽ được gọi dựa trên kiểu của con trỏ hoặc tham chiếu, không phải dựa trên kiểu của đối tượng thực tế mà con trỏ hoặc tham chiếu đang trỏ tới. Hiện tượng này được gọi là "static binding" hoặc "early binding".
* **Phương án A:** Sai. Vì đây là hàm không ảo, phiên bản lớp con sẽ không được gọi.
* **Phương án B:** Đúng. Hàm của lớp cha sẽ luôn được gọi.
* **Phương án C:** Sai. Kết quả hoàn toàn có thể dự đoán được.
* **Phương án D:** Sai. Lỗi biên dịch hoặc runtime không xảy ra trong trường hợp này.
Câu hỏi liên quan

FORM.08: Bộ 130+ Biểu Mẫu Thống Kê Trong Doanh Nghiệp

FORM.07: Bộ 125+ Biểu Mẫu Báo Cáo Trong Doanh Nghiệp

FORM.06: Bộ 320+ Biểu Mẫu Hành Chính Thông Dụng

FORM.05: Bộ 330+ Biểu Mẫu Thuế - Kê Khai Thuế Mới Nhất

FORM.04: Bộ 240+ Biểu Mẫu Chứng Từ Kế Toán Thông Dụng
