Cho lớp Dathuc, để thực hiện khai báo sau mà không lỗi:
void main()
{
Dathuc
D1,D2(D1);
}
Ta cần xây dựng:
void main()
{
Dathuc
D1,D2(D1);
}
Ta cần xây dựng:
Trả lời:
Đáp án đúng: A
Trong đoạn mã `Dathuc D1, D2(D1);`, dòng `Dathuc D1` khai báo một đối tượng `D1` thuộc lớp `Dathuc`. Để khai báo này hợp lệ, lớp `Dathuc` cần có một hàm tạo không đối số (hoặc một hàm tạo có đối số mặc định). Dòng `D2(D1)` khai báo một đối tượng `D2` và khởi tạo nó bằng cách sao chép từ đối tượng `D1`. Điều này yêu cầu lớp `Dathuc` phải có một hàm tạo sao chép (copy constructor). Vì vậy, để đoạn mã trên biên dịch và chạy đúng, lớp `Dathuc` cần có hàm tạo không đối và hàm tạo sao chép.
Phương án B không đúng vì nó chỉ cần hàm tạo có đối số, không đáp ứng việc khởi tạo D2 từ D1.
Phương án C không hoàn toàn đúng vì hàm tạo có đối số mặc định có thể thay thế hàm tạo không đối, nhưng vẫn cần hàm tạo sao chép.
Phương án D không đúng vì chỉ có hàm tạo có đối thì không thể khởi tạo D1.
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
