JavaScript is required

class Diem
{
float x,y;
public:
Diem(){x=0;y=0}; //ham tao khong doi
Diem(float x,float y);//ham tao co doi
};
class HT:public Diem
{
private:
float r;
public:
HT(){r=1;};
HT(float x1,float y1, float r1){r=r1;};
};
Đoạn chương trình trên khi khai báo 1 hình tròn (HT H1;) thì hình tròn H1 này chưa xác định được tâm vì theo tính chất kế thừa không kế thừa hàm tạo ta phải tự triệu gọi hàm tạo của lớp cơ sở ở lớp dẫn xuất. Để xác định tâm cho hình tròn H1 là 0,0 ta cần sửa là:

A.

HT():Diem(){r=1;};

B.

HT(){x=0,y=0;r=1;};

C.

 HT(){Diem();r=1;};

D.

Tất cả các phương án đều đúng

Trả lời:

Đáp án đúng: A


Câu hỏi kiểm tra về việc kế thừa và khởi tạo trong C++. Khi một lớp dẫn xuất (HT) kế thừa từ một lớp cơ sở (Diem), hàm tạo của lớp cơ sở không được tự động kế thừa. Do đó, trong hàm tạo của lớp dẫn xuất, ta cần gọi hàm tạo của lớp cơ sở để khởi tạo các thành viên của lớp cơ sở. Trong trường hợp này, lớp Diem có một hàm tạo không đối số Diem() đặt x và y bằng 0. Để đảm bảo hình tròn H1 có tâm tại (0,0), ta cần gọi hàm tạo Diem() này từ hàm tạo của HT. Phương án 1: HT():Diem(){r=1;}; - Đây là cách viết đúng để gọi hàm tạo của lớp cơ sở Diem() trong quá trình khởi tạo đối tượng HT. Nó khởi tạo lớp Diem trước khi thực hiện phần còn lại của hàm tạo HT. Phương án 2: HT(){x=0,y=0;r=1;}; - Cách này sai vì x và y là thành viên của lớp Diem, ta không thể truy cập trực tiếp từ lớp HT nếu không có quyền truy cập protected (trong trường hợp này x, y là private). Phương án 3: HT(){Diem();r=1;}; - Cách này cũng sai vì Diem() ở đây chỉ là một lời gọi hàm tạo tạm thời, không ảnh hưởng đến việc khởi tạo đối tượng Diem được kế thừa. Phương án 4: Sai vì chỉ có phương án 1 đúng.

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