Wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

Tin học chương 3 C++

Total questions: 50

Worksheet time: 25mins

Name
Class
Date
1.

Hàm tạo có đặc điểm nào sau đây?

a)

A. Có kiểu trả về

b)

B. Cùng tên với class

c)

C. Chạy thủ công

d)

D. Có thể là virtual

2.

Hàm tạo không có tham số gọi là:

a)

A. Default constructor

b)

B. Copy constructor

c)

C. Destructor

d)

D. Inline function

3.

Hàm tạo có tham số dùng để:

a)

A. Tạo object rỗng

b)

B. Khởi tạo thuộc tính với giá trị ban đầu

c)

C. Hủy object

d)

D. Nạp chồng toán tử

4.

Một class có thể có bao nhiêu constructor

a)

A. 1

b)

B. 2

c)

C. Nhiều

d)

D. Vô hạn nhưng chỉ dùng được 1

5.

Khi không định nghĩa constructor, C++ sẽ:

a)

A. Báo lỗi

b)

B. Tự sinh constructor mặc định

c)

C. Không cho tạo object

d)

D. Tạo destructor thay thế

6.

Hàm hủy được bắt đầu bằng ký hiệu:

a)

A. del

b)

B. ~

c)

C. destroy

d)

D. void

7.

Một class có bao nhiêu destructor?

a)

A. 0

b)

B. 1

c)

C. 2

d)

D. Không giới hạn

8.

Destructor có tham số không?

a)

A. Có thể có

b)

B. Không

c)

C. Tùy trường hợp

d)

D. Chỉ trong C

9.

Destructor được gọi khi nào?

a)

A. Khi object được tạo

b)

B. Khi object bị hủy

c)

C. Khi main() bắt đầu

d)

D. Khi gọi return

10.

Destructor thường dùng để:

a)

A. Khởi tạo biến

b)

B. Giải phóng tài nguyên

c)

C. In dữ liệu

d)

D. Overloading toán tử

11.

Cấp phát bộ nhớ động trong C++ dùng:

a)

A. malloc

b)

B. new

c)

C. alloc

d)

D. init

12.

Giải phóng bộ nhớ cấp phát bằng new dùng:

a)

A. free

b)

B. delete

c)

C. destroy

d)

D. remove

13.

Cấp phát trên stack khác heap ở chỗ:

a)

A. Stack do lập trình viên quản lý

b)

B. Heap tự động giải phóng

c)

C. Stack tự động giải phóng, heap cần delete

d)

D. Không có khác biệt

14.

Smart pointer unique_ptr giúp:

a)

A. Cho phép nhiều con trỏ cùng sở hữu

b)

B. Đảm bảo chỉ có một con trỏ quản lý object

c)

C. Không bao giờ giải phóng bộ nhớ

d)

D. Thay thế con trỏ thô hoàn toàn

15.

shared_ptr khác unique_ptr ở chỗ:

a)

A. Chia sẻ quyền sở hữu object

b)

B. Không giải phóng bộ nhớ

c)

C. Không dùng được với class

d)

D. Không hỗ trợ đa hình

16.

Hàm bạn được khai báo bằng từ khóa:

a)

A. public

b)

B. friend

c)

C. static

d)

D. extern

17.

Hàm bạn có thể truy cập:

a)

A. Chỉ public

b)

B. private và protected

c)

C. protected

d)

D. Không có gì

18.

Hàm bạn có phải là thành viên class không?

a)

A. Có

b)

B. Không

c)

C. Tùy compiler

d)

D. Chỉ trong C++

19.

Hàm bạn thường dùng khi:

a)

A. Cần thao tác đặc biệt với dữ liệu private

b)

B. Không có constructor

c)

C. Destructor lỗi

d)

D. Chia sẻ code với hàm main

20.

Hạn chế của friend function:

a)

A. Mất tính đóng gói

b)

B. Không chạy được

c)

C. Chạy chậm

d)

D. Không thể nạp chồng

21.

Lớp bạn là gì?

a)

A. Lớp ẩn danh

b)

B. Lớp được phép truy cập private của lớp khác

c)

C. Lớp có nhiều constructor

d)

D. Lớp abstract

22.

Khai báo lớp bạn trong class dùng cú pháp:

a)

A. class friend;

b)

B. friend class TenLop;

c)

C. class TenLop friend;

d)

D. extern class

23.

Lớp bạn có quyền truy cập:

a)

A. Chỉ public

b)

B. private và protected

c)

C. protected

d)

D. Không có gì

24.

Nhược điểm khi dùng friend class:

a)

A. Khó bảo trì, giảm đóng gói

b)

B. Không thể compile

c)

C. Không dùng được với destructor

d)

D. Không tương thích OOP

25.

Friend class nên dùng khi:

a)

A. Muốn truy cập mọi dữ liệu

b)

B. Có mối quan hệ chặt chẽ giữa 2 lớp

c)

C. Không biết dùng getter/setter

d)

D. Không muốn dùng inheritance

26.

Operator overloading là gì?

a)

A. Định nghĩa lại ý nghĩa toán tử cho class

b)

B. Tạo thêm biến

c)

C. Nạp lại hàm main

d)

D. Thay thế con trỏ

27.

Toán tử nào không thể nạp chồng?

a)

A. +

b)

B. -

c)

C. ::

d)

D. *

28.

Toán tử gán = phải được định nghĩa như:

a)

A. Member function

b)

B. Friend function

c)

C. Static function

d)

D. Global function

29.

Toán tử <<, >> thường được nạp chồng dưới dạng:

a)

A. Static method

b)

B. Friend function

c)

C. Inline

d)

D. Virtual

30.

Ưu điểm của operator overloading:

a)

A. Code ngắn gọn, trực quan

b)

B. Chạy nhanh hơn

c)

C. Giảm compile time

d)

D. Bảo mật tốt hơn

31.

Nạp chồng toán tử + cho class Vector sẽ cho phép:

a)

A. Cộng trực tiếp 2 object Vector

b)

B. Gọi hàm main

c)

C. Hủy object

d)

D. In ra object

32.

Khi nạp chồng toán tử == cho PhanSo, mục đích là:

a)

A. So sánh tử và mẫu

b)

B. So sánh con trỏ

c)

C. So sánh bộ nhớ

d)

D. So sánh string

33.

Toán tử [] được nạp chồng để:

a)

A. Truy cập mảng trong class

b)

B. So sánh object

c)

C. Xóa object

d)

D. Cộng object

34.

Toán tử () có thể được nạp chồng để:

a)

A. Cho phép object hoạt động như hàm

b)

B. Tạo constructor

c)

C. Tạo destructor

d)

D. Làm friend function

35.

Khi nạp chồng toán tử xuất <<, thường khai báo:

a)

A. ostream& operator<<(ostream&, const Class&)

b)

B. void operator<<(Class&)

c)

C. string operator<<(Class&)

d)

D. friend operator<<(int, Class&)

36.

SinhVien* sv = new SinhVien(); tạo object ở đâu?

a)

A. Stack

b)

B. Heap

c)

C. ROM

d)

D. Static memory

37.

Khi object ra khỏi scope (khối lệnh), bộ nhớ ở đâu được giải phóng tự động?

a)

A. Heap

b)

B. Stack

c)

C. ROM

d)

D. File

38.

Để tránh rò rỉ bộ nhớ khi dùng new/delete, nên dùng:

a)

A. global variable

b)

B. smart pointer

c)

C. macro

d)

D. destructor

39.

Câu lệnh delete sv; sẽ:

a)

A. Gọi constructor

b)

B. Gọi destructor

c)

C. Gọi getter

d)

D. Gọi setter

40.

sv->inThongTin(); dùng dấu -> vì:

a)

A. sv là con trỏ

b)

B. sv là object thường

c)

C. sv là static

d)

D. sv là friend

41.

Khai báo destructor có tham số → kết quả:

a)

A. Hợp lệ

b)

B. Báo lỗi

c)

C. Chạy nhưng bỏ qua tham số

d)

D. Compiler tự bỏ qua

42.

Không khai báo destructor trong class →

a)

A. Compiler tự sinh

b)

B. Báo lỗi

c)

C. Không cho tạo object

d)

D. Tạo friend class

43.

Dùng toán tử = mà không nạp chồng đúng cách →

a)

A. Dùng copy mặc định

b)

B. Báo lỗi

c)

C. Không biên dịch

d)

D. Tạo destructor

44.

Gọi hàm bạn mà chưa khai báo friend →

a)

A. Không truy cập private được

b)

B. Truy cập bình thường

c)

C. Tự động là public

d)

D. Báo lỗi compile

45.

Nạp chồng toán tử sai ngữ nghĩa (vd: dùng + để trừ) →

a)

A. Code khó hiểu

b)

B. Nhanh hơn

c)

C. Compiler sửa lại

d)

D. Không compile

46.

Hàm tạo và hàm hủy giúp:

a)

A. Quản lý vòng đời object

b)

B. Tăng tốc độ

c)

C. Nạp chồng toán tử

d)

D. Bảo mật

47.

Hàm bạn/lớp bạn giúp:

a)

A. Truy cập private/protected

b)

B. Tạo destructor

c)

C. Quản lý bộ nhớ

d)

D. Kế thừa

48.

Operator overloading giúp:

a)

A. Làm object giống kiểu dữ liệu cơ bản

b)

B. Tạo constructor

c)

C. Tạo destructor

d)

D. Giảm RAM

49.

Nếu không delete object cấp phát bằng new →

a)

A. Rò rỉ bộ nhớ

b)

B. Compiler tự xóa

c)

C. Lỗi compile

d)

D. Không ảnh hưởng

50.

Tính năng nào KHÔNG thuộc chương này?

a)

A. Hàm tạo

b)

B. Hàm hủy

c)

C. Đa hình

d)

D. Nạp chồng toán tử