JavaScript is required

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?

A.

objLop2.nhap{)
objLop2.p.nhap()

B.

objLop2.nhap()

C.

objLop2.p ^nhap()

D.

Tất cả đều sai

Trả lời:

Đá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{)
    objLop2.p.nhap()
    . Cách viết objLop2.nhap{) không hợp lệ trong C++, dấu ngoặc nhọn không đúng. Tuy nhiên, biểu thức objLop2.p.nhap() là đúng. Vì Lop2 chứa một đối tượng p kiểu Lopl, ta có thể truy cập hàm nhap() của p bằng cách này.
  • Phương án 2: objLop2.nhap(). Vì Lop2 kế thừa từ Lopl, đối tượng objLop2 có thể trực tiếp truy cập các thành viên public của Lopl, bao gồm cả hàm nhap(). 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.


50 câu hỏi 60 phút

Câu hỏi liên quan