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ó thể truy xuất thủ tục nhập của lớp 1 bằng cú pháp nào sau đây là đúng nhất?
Đáp án đúng: A
Trong đoạn mã C++ đã cho, Lop2
kế thừa từ Lopl
và đồng thời chứa một đối tượng p
thuộc kiểu Lopl
. Câu hỏi đặt ra là làm thế nào để đối tượng objLop2
(thuộc lớp Lop2
) có thể truy xuất hàm nhap()
của lớp Lopl
.
Phân tích các phương án:
- Phương án 1:
objLop2.nhap{)
. Cách viết
objLop2.p.nhap()objLop2.nhap{)
không hợp lệ trong C++, dấu ngoặc nhọn không đúng. Tuy nhiên, biểu thứcobjLop2.p.nhap()
là đúng. VìLop2
chứa một đối tượngp
kiểuLopl
, ta có thể truy cập hàmnhap()
củap
bằng cách này. - Phương án 2:
objLop2.nhap()
. VìLop2
kế thừa từLopl
, đối tượngobjLop2
có thể trực tiếp truy cập các thành viên public củaLopl
, bao gồm cả hàmnhap()
. Do đó, phương án này đúng. - Phương án 3:
objLop2.p ^nhap()
. Toán tử^
không được sử dụng để truy cập thành viên của một đối tượng trong C++. Phương án này sai. - Phương án 4: Tất cả đều sai.
Vì cả phương án 1 (một phần) và phương án 2 đều đúng, ta cần chọn phương án đúng nhất. Phương án 2 là ngắn gọn và trực tiếp nhất. Tuy nhiên, phương án 1 cũng đúng một phần (objLop2.p.nhap()
). Vì đề bài hỏi "cú pháp nào sau đây là đúng nhất?", ta chọn phương án 2.
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
