Đề thi Lập trình Hướng đối tượng - Đại học Thủy Lợi
Thông tin đề
- Môn
- Lập trình Hướng đối tượng (OOP)
- Kỳ thi
- University
- Số câu
- 20 câu
- Thời gian
- 45 phút
- Đáp án
- ✓ Có giải thích
Nội dung đề (20 câu)
- Câu 1.
Trong C++, toán tử nào sau đây KHÔNG thể nạp chồng (overload)?
- A.
+
- B.
::
- C.
*
- D.
[]
- A.
- Câu 2.
Khi nạp chồng toán tử '<<' để xuất đối tượng ra stream, cách thường dùng nhất là:
- A.
Hàm thành viên của lớp
- B.
Hàm bạn (friend function)
- C.
Hàm tĩnh (static function)
- D.
Phương thức ảo (virtual method)
- A.
- Câu 3.
Nếu khai báo 'Complex operator+(const Complex& other) const;' thì đây là:
- A.
Hàm bạn nạp chồng toán tử +
- B.
Hàm thành viên nạp chồng toán tử +
- C.
Hàm tĩnh nạp chồng toán tử +
- D.
Toán tử ba ngôi
- A.
- Câu 4.
Toán tử nào sau đây BẮT BUỘC phải được nạp chồng dưới dạng hàm bạn (friend)?
- A.
+
- B.
=
- C.
[]
- D.
<<
- A.
- Câu 5.
Khi nạp chồng toán tử ++ dưới dạng hàm thành viên không có tham số, nó tương ứng với:
- A.
Toán tử tăng trước (prefix ++a)
- B.
Toán tử tăng sau (postfix a++)
- C.
Lỗi biên dịch
- D.
Không thể xác định
- A.
- Câu 6.
Khi nạp chồng toán tử gán (=), điều nào dưới đây thường được thực hiện để đảm bảo an toàn?
- A.
Kiểm tra tự gán (self-assignment)
- B.
Giải phóng bộ nhớ cũ trước khi cấp phát mới
- C.
Thực hiện sao chép sâu (deep copy)
- D.
Tất cả các ý trên
- A.
- Câu 7.
Cho lớp MangSo có mảng động. Khai báo nào phù hợp để nạp chồng toán tử truy cập []?
- A.
int operator[](int i);
- B.
friend int operator[](MangSo, int);
- C.
static int operator[](int i);
- D.
int operator[](int i, int j);
- A.
- Câu 8.
Phát biểu nào đúng về nạp chồng toán tử trong C++?
- A.
Có thể thay đổi số toán hạng của toán tử gốc
- B.
Phải giữ nguyên số toán hạng và độ ưu tiên của toán tử
- C.
Có thể tạo toán tử mới chưa từng tồn tại
- D.
Bắt buộc phải là hàm thành viên
- A.
- Câu 9.
Kết quả của biểu thức (a == b) khi a, b là đối tượng lớp PhanSo mà ta đã nạp chồng toán tử == sẽ:
- A.
Luôn so sánh địa chỉ hai đối tượng
- B.
Gọi hàm operator== mà ta đã định nghĩa
- C.
Gây lỗi biên dịch
- D.
Chuyển về kiểu int rồi so sánh
- A.
- Câu 10.
Hàm operator* (const Diem& d1, const Diem& d2) khai báo như sau: Diem operator*(const Diem& d1, const Diem& d2); Hàm này nên khai báo ở đâu?
- A.
Bên trong lớp Diem làm hàm thành viên
- B.
Bên ngoài lớp như hàm thường
- C.
Bên ngoài lớp kết hợp từ khóa friend trong lớp
- D.
Không khai báo được
- A.
- Câu 11.
Khi một lớp con kế thừa từ lớp cha với từ khóa 'public', thành viên 'public' của lớp cha trong lớp con có mức truy cập là:
- A.
public
- B.
private
- C.
protected
- D.
Không thể truy cập
- A.
- Câu 12.
Khi lớp con kế thừa từ lớp cha với từ khóa 'private', thành viên 'protected' của lớp cha trong lớp con trở thành:
- A.
public
- B.
protected
- C.
private
- D.
Không thể truy cập
- A.
- Câu 13.
Thứ tự gọi các hàm khởi tạo khi tạo một đối tượng của lớp con là:
- A.
Lớp con trước, lớp cha sau
- B.
Lớp cha trước, lớp con sau
- C.
Cả hai chạy đồng thời
- D.
Phụ thuộc vào trình biên dịch
- A.
- Câu 14.
Thứ tự gọi hàm hủy khi đối tượng lớp con bị hủy là:
- A.
Lớp con trước, lớp cha sau
- B.
Lớp cha trước, lớp con sau
- C.
Cả hai chạy đồng thời
- D.
Không có hàm hủy
- A.
- Câu 15.
Đa kế thừa (multiple inheritance) trong C++ nghĩa là:
- A.
Một lớp con kế thừa từ nhiều lớp cha
- B.
Nhiều lớp con kế thừa từ một lớp cha
- C.
Lớp con kế thừa từ lớp cha của lớp cha
- D.
Không được phép trong C++
- A.
- Câu 16.
Lớp trừu tượng (abstract class) trong C++ là lớp:
- A.
Có ít nhất một hàm thuần ảo (pure virtual function)
- B.
Không có bất kỳ hàm nào
- C.
Có hàm main
- D.
Có tất cả các hàm là static
- A.
- Câu 17.
Cú pháp khai báo hàm ảo thuần túy (pure virtual function) trong C++ là:
- A.
virtual void hienThi();
- B.
virtual void hienThi() = 0;
- C.
void virtual hienThi();
- D.
pure virtual void hienThi();
- A.
- Câu 18.
Phát biểu nào đúng về hàm ảo (virtual function)?
- A.
Hàm ảo cho phép gọi đúng phiên bản hàm của lớp con thông qua con trỏ lớp cha
- B.
Hàm ảo chỉ hoạt động với đối tượng, không hoạt động với con trỏ
- C.
Hàm ảo không thể được định nghĩa lại trong lớp con
- D.
Hàm ảo làm tăng tốc độ chương trình
- A.
- Câu 19.
Hàm khởi tạo của lớp con trong C++ có thể gọi trực tiếp hàm khởi tạo của lớp cha thông qua:
- A.
Từ khóa 'base'
- B.
Tên lớp cha trong danh sách khởi tạo
- C.
Từ khóa 'parent'
- D.
Không thể gọi trực tiếp
- A.
- Câu 20.
Một lớp có hàm ảo thuần túy có thể tạo đối tượng trực tiếp được không?
- A.
Được, hoàn toàn bình thường
- B.
Không được vì lớp đó là trừu tượng
- C.
Được nhưng phải dùng từ khóa new
- D.
Tùy thuộc vào phiên bản C++
- A.
Đáp án và giải thích từng câu có trong chế độ .