NEW
Font size
WorksheetsTin học chương 4 C++
Total questions: 50
Worksheet time: 25mins
Inheritance trong C++ dùng để:
A. Tái sử dụng code
B. Tạo biến toàn cục
C. Định nghĩa macro
D. Nạp chồng toán tử
Lớp kế thừa gọi là:
A. Base class
B. Derived class
C. Abstract class
D. Friend class
Lớp cha còn gọi là:
A. Base class
B. Child class
C. Derived class
D. Virtual class
Lợi ích chính của kế thừa là:
A. Tăng tốc độ chương trình
B. Tái sử dụng và mở rộng mã
C. Giảm RAM
D. Tăng coupling
Từ khóa khai báo kế thừa trong C++ là:
A. inherits
B. :
C. ::
D. ->
Trong kế thừa public, thành viên public lớp cha thành:
A. private
B. protected
C. public
D. static
Trong kế thừa protected, thành viên public lớp cha thành:
A. private
B. protected
C. public
D. static
Trong kế thừa private, thành viên public lớp cha thành:
A. private
B. protected
C. public
D. friend
Mặc định trong C++ class kế thừa là:
A. public
B. private
C. protected
D. virtual
Từ khóa nào dùng để chỉ rõ loại kế thừa?
A. public/private/protected
B. virtual/static
C. abstract/final
D. friend
Overriding là gì?
A. Hàm cùng tên, khác tham số
B. Lớp con định nghĩa lại hàm lớp cha
C. Nạp chồng toán tử
D. Nạp chồng constructor
Để override, hàm lớp cha cần:
A. inline
B. virtual
C. static
D. friend
Nếu hàm không virtual, gọi qua con trỏ base sẽ chạy:
A. Hàm lớp cha
B. Hàm lớp con
C. Cả hai
D. Báo lỗi
Từ khóa override trong C++ dùng để:
A. Tạo hàm inline
B. Đảm bảo hàm override đúng
C. Nạp chồng hàm
D. Khai báo constructor
Overriding xảy ra ở:
A. Compile-time
B. Runtime
C. Destructor
D. Abstract
Lớp cơ sở trừu tượng chứa:
A. Pure virtual function
B. Static function
C. Friend function
D. Inline function
Pure virtual function khai báo bằng:
A. = 0
B. == 0
C. inline
D. friend
Có thể tạo object từ abstract class không?
A. Có
B. Không
C. Tùy compiler
D. Chỉ khi static
Khi kế thừa abstract class, lớp con phải:
A. Override tất cả pure virtual function
B. Override một phần
C. Không cần override
D. Gọi constructor
Abstract class thường dùng để:
A. Định nghĩa giao diện chung
B. Nạp chồng toán tử
C. Quản lý bộ nhớ
D. Tăng tốc độ
Đa kế thừa nghĩa là:
A. Một lớp kế thừa nhiều lớp cha
B. Một hàm nhiều tham số
C. Một object nhiều destructor
D. Một biến nhiều giá trị
Vấn đề diamond problem xuất hiện khi:
A. Hai lớp cha cùng kế thừa từ 1 lớp cơ sở
B. Hàm overload trùng tên
C. Destructor không virtual
D. Trùng tên biến
Để xử lý diamond problem, dùng:
A. Virtual inheritance
B. Destructor ảo
C. Aggregation
D. Static method
Trong đa kế thừa, nếu hai lớp cha có hàm trùng tên →
A. Gọi mơ hồ, cần chỉ rõ
B. Compiler chọn lớp cha đầu tiên
C. Compiler chọn lớp cha cuối cùng
D. Báo lỗi runtime
Diamond problem thường liên quan đến:
A. Constructor
B. Virtual inheritance
C. Destructor
D. Static variable
Constructor lớp cha gọi khi nào?
A. Trước constructor lớp con
B. Sau constructor lớp con
C. Không gọi
D. Tuỳ compiler
Destructor lớp cha gọi khi nào?
A. Trước destructor lớp con
B. Sau destructor lớp con
C. Không gọi
D. Ngẫu nhiên
Nếu lớp con không có constructor thì:
A. Compiler gọi constructor mặc định của lớp cha
B. Compiler báo lỗi
C. Không khởi tạo được
D. Tự tạo destructor
Để gọi constructor lớp cha từ lớp con:
A. this->Base()
B. Danh sách khởi tạo
C. Gọi trực tiếp trong body
D. Không thể gọi
Destructor lớp cha nên là:
A. virtual
B. static
C. inline
D. friend
Quan hệ “is-a” thể hiện bằng:
A. Inheritance
B. Aggregation
C. Dependency
D. Composition
Quan hệ “has-a” thể hiện bằng:
A. Aggregation
B. Inheritance
C. Overloading
D. Dependency
Kế thừa private có duy trì is-a không?
A. Có
B. Không
C. Tùy compiler
D. Tùy constructor
Một abstract class có thể có hàm thường không?
A. Có
B. Không
C. Chỉ inline
D. Chỉ static
Kế thừa giúp:
A. Giảm code trùng lặp
B. Tăng trùng lặp
C. Giảm đóng gói
D. Giảm đa hình
Từ khóa virtual dùng để:
A. Cho phép override
B. Tăng tốc độ
C. Tạo destructor
D. Tạo constructor
Đa hình động đạt được nhờ:
A. Virtual function
B. Inline function
C. Static method
D. Macro
Nếu hàm ảo không override →
A. Gọi hàm lớp cha
B. Báo lỗi
C. Compiler tự thêm
D. Runtime error
Virtual destructor cần khi:
A. Dùng kế thừa
B. Không cấp phát bộ nhớ
C. Dùng struct
D. Không override
Vtable lưu gì?
A. Con trỏ đến hàm ảo
B. Con trỏ đến constructor
C. Con trỏ đến friend
D. Con trỏ đến static
Quên từ khóa virtual → mất:
A. Đa hình động
B. Đa hình tĩnh
C. Kế thừa
D. Đóng gói
Không khai báo destructor ảo → gây:
A. Memory leak
B. Compile error
C. Không ảnh hưởng
D. Runtime error
Gán object derived cho biến base →
A. Object slicing
B. Diamond problem
C. Memory leak
D. Compile crash
Overloading bị nhầm với overriding →
A. Overloading = compile-time, Overriding = runtime
B. Ngược lại
C. Cả hai compile-time
D. Cả hai runtime
Quên override pure virtual function →
A. Lớp con trở thành abstract
B. Lớp con compile bình thường
C. Compiler tự thêm code
D. Runtime error
Ưu điểm chính của inheritance:
A. Tái sử dụng, mở rộng, hỗ trợ đa hình
B. Giảm tính bảo mật
C. Giảm cohesion
D. Không có lợi ích
Nhược điểm của đa kế thừa:
A. Diamond problem
B. Không có đa hình
C. Không kế thừa constructor
D. Không override
Override khác overload ở:
A. Override = runtime, Overload = compile-time
B. Cả hai compile-time
C. Cả hai runtime
D. Giống nhau
Inheritance kết hợp polymorphism giúp:
A. Giảm code tái sử dụng
B. Cho phép dùng con trỏ base gọi hàm derived
C. Tăng compile time
D. Giảm encapsulation
Tính năng nào KHÔNG liên quan đến inheritance?
A. Đa hình
B. Kế thừa
C. Nạp chồng toán tử
D. Trừu tượng
