Lập trình Hướng đối tượng (OOP) University

Đề thi Lập trình Hướng đối tượng - Đại học Thủy Lợi

20 câu
45 phút
Có đáp án

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)

  1. Câu 1.

    Trong C++, toán tử nào sau đây KHÔNG thể nạp chồng (overload)?

    • A.

      +

    • B.

      ::

    • C.

      *

    • D.

      []

  2. 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)

  3. 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

  4. 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.

      <<

  5. 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

  6. 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

  7. 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);

  8. 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

  9. 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

  10. 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

  11. 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

  12. 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

  13. 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

  14. 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

  15. 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++

  16. 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

  17. 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();

  18. 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

  19. 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

  20. 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++

Đáp án và giải thích từng câu có trong chế độ .