NEW
Font size
WorksheetsCâu hỏi về C++
Total questions: 42
Worksheet time: 21mins
std::vector cấp phát bộ nhớ ở đâu?
Static
Register
Stack
Heap
Rule of Five liên quan đến:
Template
STL
Kế thừa
Quản lý tài nguyên
Lambda expression trong C++ dùng để:
Quản lý bộ nhớ
Khai báo lớp
Kế thừa lớp
Tạo hàm ẩn danh
Hàm nào trong STL dùng để sắp xếp vector?
arrange()
order()
sort()
sequence()
Template trong C++ dùng để:
Lập trình tổng quát
Quản lý bộ nhớ
Tăng tốc chương trình
Tạo giao diện
Thứ tự hủy đối tượng trong kế thừa là:
Derived → Base
Base → Derived
Ngẫu nhiên
Không xác định
Phạm vi truy cập protected cho phép:
Chỉ hàm bạn bè truy cập
Lớp dẫn xuất truy cập
Chỉ lớp hiện tại truy cập
Mọi đối tượng truy cập
Từ khóa const sau hàm thành viên có ý nghĩa gì?
Hàm không đổi tham số
Hàm là static
Hàm không thay đổi thuộc tính đối tượng
Hàm không bị override
Capture list trong lambda dùng để:
Truyền tham số
Bắt lỗi
Tạo iterator
Truy cập biến bên ngoài
Điều gì xảy ra nếu destructor của lớp cơ sở không khai báo virtual và xóa đối tượng dẫn xuất thông qua con trỏ lớp cơ sở?
Không cấp phát bộ nhớ
Chương trình không biên dịch
Destructor lớp dẫn xuất không được gọi
Chương trình chạy bình thường
Namespace dùng để:
Tránh trùng tên
Tăng tốc chương trình
Quản lý bộ nhớ
Thay thế class
Từ khóa explicit dùng để:
Khai báo const
Khai báo virtual
Ngăn ép kiểu ngầm
Cho phép ép kiểu
Smart pointer không bao gồm loại nào?
unique_ptr
shared_ptr
auto_ptr
raw_ptr
Static member của lớp:
Chỉ dùng trong hàm main
Không truy cập được
Thuộc từng đối tượng
Thuộc về lớp
Static member của lớp:
Chỉ dùng trong hàm main
Không truy cập được
Thuộc từng đối tượng
Thuộc về lớp
Const object chỉ gọi được:
Hàm static
Hàm virtual
Hàm const
Mọi hàm
Ưu điểm chính của smart pointer là:
Tránh rò rỉ bộ nhớ
Chạy nhanh hơn con trỏ thường
Không cần destructor
Giảm dung lượng chương trình
Dynamic_cast dùng để:
Ép kiểu con trỏ void
Ép kiểu template
Ép kiểu tĩnh
Ép kiểu runtime có kiểm tra
Move constructor giúp:
Hủy đối tượng
Đa hình
Chuyển quyền sở hữu tài nguyên
Sao chép đối tượng
Khi nào nên sử dụng composition thay vì inheritance?
Khi quan hệ "là một"
Khi cần override hàm
Khi cần đa hình
Khi quan hệ "có một"
Phát biểu nào đúng về hàm ảo thuần túy (pure virtual function)?
Có thân hàm
Không thể override
Bắt buộc lớp chứa nó là lớp trừu tượng
Chỉ khai báo trong lớp dẫn xuất
Con trỏ lớp cơ sở trỏ đến đối tượng lớp dẫn xuất cho phép:
Gọi hàm lớp cơ sở
Gọi hàm lớp dẫn xuất
Không gọi được hàm nào
Gọi đúng hàm nếu có virtual
Điều kiện để dùng dynamic_cast với class là:
Có destructor
Có ít nhất một hàm ảo
Có template
Có constructor
Khác biệt chính giữa con trỏ và tham chiếu là:
Con trỏ không thể thay đổi
Tham chiếu có thể null
Tham chiếu phải khởi tạo ngay
Con trỏ không lưu địa chỉ
Hàm nào được gọi đầu tiên khi tạo đối tượng kế thừa?
Constructor lớp dẫn xuất
Destructor lớp cơ sở
Destructor lớp dẫn xuất
Constructor lớp cơ sở
Một lớp có ít nhất một hàm ảo thuần túy được gọi là:
Lớp trừu tượng
Lớp ảo
Lớp dẫn xuất
Lớp đóng gói
int* p = &x;
Không lỗi
Lỗi vì bỏ const
Lỗi cú pháp
Lỗi vì p là con trỏ
STL container nào không cho phép truy cập ngẫu nhiên?
array
deque
vector
list
STL container nào không cho phép truy cập ngẫu nhiên?
array
deque
vector
list
Exception trong C++ dùng để:
Tăng hiệu năng
Quản lý bộ nhớ
Lặp chương trình
Xử lý lỗi runtime
Toán tử nào nên overload khi cấp phát tài nguyên?
[]
++
==
=
Từ khóa nào đảm bảo phương thức không bị override ở lớp dẫn xuất?
const
static
virtual
final
delete[] dùng khi:
Giải phóng vector
Giải phóng mảng động
Giải phóng object static
Giải phóng 1 biến
RAII liên quan đến:
Quản lý tài nguyên tự động
Đa hình
Template
Kế thừa
Constructor có thể được khai báo là virtual không?
Chỉ khi đa hình
Chỉ khi kế thừa
Có
Không
Inline function giúp:
Tạo hàm ảo
Giảm chi phí gọi hàm
Tăng kích thước file
Bắt buộc compiler inline
Phát biểu nào đúng nhất?
OOP chỉ dùng cho GUI
Virtual function hỗ trợ đa hình runtime
Template hỗ trợ đa hình runtime
C++ không hỗ trợ đa hình
Khi nào hàm template được sinh mã?
Khi được sử dụng
Khi khai báo
Khi biên dịch thư viện
Khi chạy chương trình
Overriding trong C++ yêu cầu điều kiện nào?
Tên hàm giống nhau
Tất cả các ý trên
Danh sách tham số giống nhau
Hàm lớp cơ sở phải là virtual
Khối nào bắt ngoại lệ?
throw
final
catch
try
Destructor nên được khai báo virtual khi:
Có kế thừa và xóa qua con trỏ base
Không dùng new
Không dùng kế thừa
Chỉ dùng biến tĩnh
Iterator trong STL dùng để:
Thêm phần tử
Sắp xếp dữ liệu
Duyệt container
Cấp phát bộ nhớ
