WorksheetsTin học chương 3 C++
Total questions: 50
Worksheet time: 25mins
Hàm tạo có đặc điểm nào sau đây?
A. Có kiểu trả về
B. Cùng tên với class
C. Chạy thủ công
D. Có thể là virtual
Hàm tạo không có tham số gọi là:
A. Default constructor
B. Copy constructor
C. Destructor
D. Inline function
Hàm tạo có tham số dùng để:
A. Tạo object rỗng
B. Khởi tạo thuộc tính với giá trị ban đầu
C. Hủy object
D. Nạp chồng toán tử
Một class có thể có bao nhiêu constructor
A. 1
B. 2
C. Nhiều
D. Vô hạn nhưng chỉ dùng được 1
Khi không định nghĩa constructor, C++ sẽ:
A. Báo lỗi
B. Tự sinh constructor mặc định
C. Không cho tạo object
D. Tạo destructor thay thế
Hàm hủy được bắt đầu bằng ký hiệu:
A. del
B. ~
C. destroy
D. void
Một class có bao nhiêu destructor?
A. 0
B. 1
C. 2
D. Không giới hạn
Destructor có tham số không?
A. Có thể có
B. Không
C. Tùy trường hợp
D. Chỉ trong C
Destructor được gọi khi nào?
A. Khi object được tạo
B. Khi object bị hủy
C. Khi main() bắt đầu
D. Khi gọi return
Destructor thường dùng để:
A. Khởi tạo biến
B. Giải phóng tài nguyên
C. In dữ liệu
D. Overloading toán tử
Cấp phát bộ nhớ động trong C++ dùng:
A. malloc
B. new
C. alloc
D. init
Giải phóng bộ nhớ cấp phát bằng new dùng:
A. free
B. delete
C. destroy
D. remove
Cấp phát trên stack khác heap ở chỗ:
A. Stack do lập trình viên quản lý
B. Heap tự động giải phóng
C. Stack tự động giải phóng, heap cần delete
D. Không có khác biệt
Smart pointer unique_ptr giúp:
A. Cho phép nhiều con trỏ cùng sở hữu
B. Đảm bảo chỉ có một con trỏ quản lý object
C. Không bao giờ giải phóng bộ nhớ
D. Thay thế con trỏ thô hoàn toàn
shared_ptr khác unique_ptr ở chỗ:
A. Chia sẻ quyền sở hữu object
B. Không giải phóng bộ nhớ
C. Không dùng được với class
D. Không hỗ trợ đa hình
Hàm bạn được khai báo bằng từ khóa:
A. public
B. friend
C. static
D. extern
Hàm bạn có thể truy cập:
A. Chỉ public
B. private và protected
C. protected
D. Không có gì
Hàm bạn có phải là thành viên class không?
A. Có
B. Không
C. Tùy compiler
D. Chỉ trong C++
Hàm bạn thường dùng khi:
A. Cần thao tác đặc biệt với dữ liệu private
B. Không có constructor
C. Destructor lỗi
D. Chia sẻ code với hàm main
Hạn chế của friend function:
A. Mất tính đóng gói
B. Không chạy được
C. Chạy chậm
D. Không thể nạp chồng
Lớp bạn là gì?
A. Lớp ẩn danh
B. Lớp được phép truy cập private của lớp khác
C. Lớp có nhiều constructor
D. Lớp abstract
Khai báo lớp bạn trong class dùng cú pháp:
A. class friend;
B. friend class TenLop;
C. class TenLop friend;
D. extern class
Lớp bạn có quyền truy cập:
A. Chỉ public
B. private và protected
C. protected
D. Không có gì
Nhược điểm khi dùng friend class:
A. Khó bảo trì, giảm đóng gói
B. Không thể compile
C. Không dùng được với destructor
D. Không tương thích OOP
Friend class nên dùng khi:
A. Muốn truy cập mọi dữ liệu
B. Có mối quan hệ chặt chẽ giữa 2 lớp
C. Không biết dùng getter/setter
D. Không muốn dùng inheritance
Operator overloading là gì?
A. Định nghĩa lại ý nghĩa toán tử cho class
B. Tạo thêm biến
C. Nạp lại hàm main
D. Thay thế con trỏ
Toán tử nào không thể nạp chồng?
A. +
B. -
C. ::
D. *
Toán tử gán = phải được định nghĩa như:
A. Member function
B. Friend function
C. Static function
D. Global function
Toán tử <<, >> thường được nạp chồng dưới dạng:
A. Static method
B. Friend function
C. Inline
D. Virtual
Ưu điểm của operator overloading:
A. Code ngắn gọn, trực quan
B. Chạy nhanh hơn
C. Giảm compile time
D. Bảo mật tốt hơn
Nạp chồng toán tử + cho class Vector sẽ cho phép:
A. Cộng trực tiếp 2 object Vector
B. Gọi hàm main
C. Hủy object
D. In ra object
Khi nạp chồng toán tử == cho PhanSo, mục đích là:
A. So sánh tử và mẫu
B. So sánh con trỏ
C. So sánh bộ nhớ
D. So sánh string
Toán tử [] được nạp chồng để:
A. Truy cập mảng trong class
B. So sánh object
C. Xóa object
D. Cộng object
Toán tử () có thể được nạp chồng để:
A. Cho phép object hoạt động như hàm
B. Tạo constructor
C. Tạo destructor
D. Làm friend function
Khi nạp chồng toán tử xuất <<, thường khai báo:
A. ostream& operator<<(ostream&, const Class&)
B. void operator<<(Class&)
C. string operator<<(Class&)
D. friend operator<<(int, Class&)
SinhVien* sv = new SinhVien(); tạo object ở đâu?
A. Stack
B. Heap
C. ROM
D. Static memory
Khi object ra khỏi scope (khối lệnh), bộ nhớ ở đâu được giải phóng tự động?
A. Heap
B. Stack
C. ROM
D. File
Để tránh rò rỉ bộ nhớ khi dùng new/delete, nên dùng:
A. global variable
B. smart pointer
C. macro
D. destructor
Câu lệnh delete sv; sẽ:
A. Gọi constructor
B. Gọi destructor
C. Gọi getter
D. Gọi setter
sv->inThongTin(); dùng dấu -> vì:
A. sv là con trỏ
B. sv là object thường
C. sv là static
D. sv là friend
Khai báo destructor có tham số → kết quả:
A. Hợp lệ
B. Báo lỗi
C. Chạy nhưng bỏ qua tham số
D. Compiler tự bỏ qua
Không khai báo destructor trong class →
A. Compiler tự sinh
B. Báo lỗi
C. Không cho tạo object
D. Tạo friend class
Dùng toán tử = mà không nạp chồng đúng cách →
A. Dùng copy mặc định
B. Báo lỗi
C. Không biên dịch
D. Tạo destructor
Gọi hàm bạn mà chưa khai báo friend →
A. Không truy cập private được
B. Truy cập bình thường
C. Tự động là public
D. Báo lỗi compile
Nạp chồng toán tử sai ngữ nghĩa (vd: dùng + để trừ) →
A. Code khó hiểu
B. Nhanh hơn
C. Compiler sửa lại
D. Không compile
Hàm tạo và hàm hủy giúp:
A. Quản lý vòng đời object
B. Tăng tốc độ
C. Nạp chồng toán tử
D. Bảo mật
Hàm bạn/lớp bạn giúp:
A. Truy cập private/protected
B. Tạo destructor
C. Quản lý bộ nhớ
D. Kế thừa
Operator overloading giúp:
A. Làm object giống kiểu dữ liệu cơ bản
B. Tạo constructor
C. Tạo destructor
D. Giảm RAM
Nếu không delete object cấp phát bằng new →
A. Rò rỉ bộ nhớ
B. Compiler tự xóa
C. Lỗi compile
D. Không ảnh hưởng
Tính năng nào KHÔNG thuộc chương này?
A. Hàm tạo
B. Hàm hủy
C. Đa hình
D. Nạp chồng toán tử
