Cho lớp A, B, C trong đó lớp C kế thừa lớp A, B. Trong lớp A, B đều có phương thức Xuat, khi khai báo đối tượng obj thuộc lớp C thì nếu gọi đến phương thức Xuat (obj.Xuat()) thì phương thức Xuat của lớp nào sẽ được gọi?
Đáp án đúng: C
Trong C++, khi một lớp kế thừa từ nhiều lớp khác (đa kế thừa) và các lớp cha có cùng phương thức, trình biên dịch cần biết phương thức nào sẽ được gọi khi đối tượng của lớp con gọi phương thức đó. Nếu không có chỉ dẫn rõ ràng, trình biên dịch sẽ báo lỗi vì không thể xác định được phương thức nào sẽ được thực thi. Để giải quyết vấn đề này, ta có thể sử dụng các phương pháp sau:
- Sử dụng toán tử phạm vi (::): Chỉ định rõ ràng lớp cha mà phương thức Xuat cần được gọi, ví dụ:
obj.A::Xuat()
hoặcobj.B::Xuat()
. - Ghi đè phương thức Xuat trong lớp C: Định nghĩa lại phương thức Xuat trong lớp C và trong phương thức này, ta có thể gọi phương thức Xuat của lớp A hoặc B hoặc cả hai, tùy theo yêu cầu.
- Sử dụng kế thừa ảo (virtual inheritance): Nếu A và B cùng kế thừa từ một lớp cơ sở, ta có thể sử dụng kế thừa ảo để tránh việc có nhiều bản sao của lớp cơ sở trong lớp C.
Nếu không có bất kỳ biện pháp giải quyết nào được thực hiện, trình biên dịch sẽ báo lỗi không thể xác định được phương thức nào sẽ được gọi.
Cùng ôn thi với bộ câu hỏi trắc nghiệm môn Lập trình hướng đối tượng có đáp án mà tracnghiem.net chia sẽ dưới đây, nhằm giúp các bạn sinh viên chuyên ngành chuẩn bị cho kì thi sắp tới.
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
