Giả sử có đoạn mã code được viết như sau:
class Lopl
{
public:
int a,b;
void nhap()
{
cout«"\n\t a = ";cin»a;
cout«"\n\t b =";cin»b;
}
};
class Lop2: public Lopl
{
public:
Lopl *p;
};
Khi khai báo đối tượng objLop2 cho Lop2 thì nó có truy xuất thủ tục nhập của lớp 1 bằng cú pháp nào sau:
Trả lời:
Đáp án đúng: C
Câu hỏi kiểm tra kiến thức về kế thừa trong C++ và cách truy cập các thành viên của lớp cha từ lớp con. Trong đoạn code, `Lop2` kế thừa `Lop1` theo kiểu `public`. Điều này có nghĩa là các thành viên `public` của `Lop1` vẫn là `public` trong `Lop2`. Do đó, đối tượng `objLop2` của `Lop2` có thể trực tiếp truy cập các thành viên `public` của `Lop1` (ví dụ: `nhap()`) bằng toán tử `.`.
* **Đáp án 1 (`objLop2.nhap()`):** Đây là cách truy cập đúng vì `nhap()` là một hàm `public` của `Lop1` và `Lop2` kế thừa `Lop1` theo kiểu `public`, nên `objLop2` có thể gọi `nhap()` trực tiếp.
* **Đáp án 2 (`objLop2->nhap()`):** Cách này dùng toán tử `->`, thường được sử dụng để truy cập thành viên của một đối tượng thông qua con trỏ. Tuy nhiên, `objLop2` không phải là con trỏ, mà là một đối tượng trực tiếp.
* **Đáp án 3 (`objLop2.p ->nhap( ) objLop2.nhap()`):** `objLop2.p` là một con trỏ đến đối tượng `Lop1`. Tuy nhiên, việc gọi `objLop2.nhap()` sau đó là thừa và không liên quan, và cách viết này không hợp lệ.
* **Đáp án 4 (`Tất cả đều sai`):** Vì đáp án 1 đúng, nên đáp án này sai.
Vậy, đáp án đúng là `objLop2.nhap()`.
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.
50 câu hỏi 60 phút
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
