Trả lời:
Đáp án đúng: B
Trong C++, destructor (hàm hủy) là một hàm thành viên đặc biệt được tự động gọi khi một đối tượng của một lớp bị hủy. Hàm hủy có tên giống như tên lớp nhưng có dấu ngã (~) ở phía trước. Một lớp chỉ có thể có một destructor. Do đó, destructor không thể được overload (nạp chồng). Vì vậy, câu trả lời đúng là FALSE.
Câu hỏi liên quan
Lời giải:
Đáp án đúng: D
Đoạn code trên thực hiện các bước sau:
1. Khởi tạo biến `x = 20`.
2. `x++` là phép toán tăng giá trị của `x` lên 1 sau khi giá trị hiện tại của `x` được sử dụng trong biểu thức. Trong trường hợp này, giá trị của `x` (là 20) được in ra trước, sau đó `x` mới tăng lên 21.
3. `++x` là phép toán tăng giá trị của `x` lên 1 trước khi giá trị của `x` được sử dụng trong biểu thức. Vì `x` đang là 21, nó sẽ tăng lên 22, và giá trị 22 này được in ra.
Vậy, kết quả in ra sẽ là 20 và 22. Tuy nhiên không có đáp án nào trùng với kết quả này.
1. Khởi tạo biến `x = 20`.
2. `x++` là phép toán tăng giá trị của `x` lên 1 sau khi giá trị hiện tại của `x` được sử dụng trong biểu thức. Trong trường hợp này, giá trị của `x` (là 20) được in ra trước, sau đó `x` mới tăng lên 21.
3. `++x` là phép toán tăng giá trị của `x` lên 1 trước khi giá trị của `x` được sử dụng trong biểu thức. Vì `x` đang là 21, nó sẽ tăng lên 22, và giá trị 22 này được in ra.
Vậy, kết quả in ra sẽ là 20 và 22. Tuy nhiên không có đáp án nào trùng với kết quả này.
Lời giải:
Đáp án đúng: D
Câu hỏi này kiểm tra kiến thức về các khái niệm cơ bản trong lập trình hướng đối tượng (OOP), đặc biệt là liên quan đến việc che giấu thông tin và bảo vệ dữ liệu.
* Encapsulation (Đóng gói): Là việc gói dữ liệu (thuộc tính) và các phương thức thao tác trên dữ liệu đó vào trong một đơn vị duy nhất, thường là một lớp. Đóng gói giúp bảo vệ dữ liệu khỏi sự truy cập trực tiếp từ bên ngoài và đảm bảo tính toàn vẹn của dữ liệu.
* Information Hiding (Che giấu thông tin): Là nguyên tắc ẩn các chi tiết triển khai bên trong của một lớp khỏi người dùng. Người dùng chỉ cần biết cách sử dụng lớp thông qua giao diện công khai (public interface) mà không cần biết cách nó hoạt động bên trong.
* Data Abstraction (Trừu tượng hóa dữ liệu): Là quá trình đơn giản hóa các đối tượng phức tạp bằng cách chỉ hiển thị các đặc điểm và hành vi cần thiết cho người dùng. Nó cho phép người dùng tập trung vào những gì đối tượng làm thay vì cách nó làm.
Trong trường hợp này, "design of classes in a way that hides the details of implementation from the user" đề cập đến việc che giấu chi tiết triển khai khỏi người dùng, do đó cả đóng gói, che giấu thông tin và trừu tượng hóa dữ liệu đều liên quan. Vì vậy, đáp án đúng nhất là "All of the above".
* Encapsulation (Đóng gói): Là việc gói dữ liệu (thuộc tính) và các phương thức thao tác trên dữ liệu đó vào trong một đơn vị duy nhất, thường là một lớp. Đóng gói giúp bảo vệ dữ liệu khỏi sự truy cập trực tiếp từ bên ngoài và đảm bảo tính toàn vẹn của dữ liệu.
* Information Hiding (Che giấu thông tin): Là nguyên tắc ẩn các chi tiết triển khai bên trong của một lớp khỏi người dùng. Người dùng chỉ cần biết cách sử dụng lớp thông qua giao diện công khai (public interface) mà không cần biết cách nó hoạt động bên trong.
* Data Abstraction (Trừu tượng hóa dữ liệu): Là quá trình đơn giản hóa các đối tượng phức tạp bằng cách chỉ hiển thị các đặc điểm và hành vi cần thiết cho người dùng. Nó cho phép người dùng tập trung vào những gì đối tượng làm thay vì cách nó làm.
Trong trường hợp này, "design of classes in a way that hides the details of implementation from the user" đề cập đến việc che giấu chi tiết triển khai khỏi người dùng, do đó cả đóng gói, che giấu thông tin và trừu tượng hóa dữ liệu đều liên quan. Vì vậy, đáp án đúng nhất là "All of the above".
Lời giải:
Đáp án đúng: B
Khả năng tái sử dụng các đối tượng đã được định nghĩa, có thể cho một mục đích khác, với sửa đổi phù hợp với mục đích mới, được gọi là tính kế thừa (Inheritance).
A. Information hiding (Tính che giấu thông tin): Là nguyên tắc ẩn các chi tiết triển khai bên trong một đối tượng và chỉ hiển thị giao diện cần thiết cho người dùng. Không liên quan trực tiếp đến việc tái sử dụng đối tượng cho mục đích khác.
B. Inheritance (Tính kế thừa): Cho phép một lớp (class) mới kế thừa các thuộc tính và phương thức từ một lớp đã có (lớp cha). Lớp mới có thể tái sử dụng các thành phần của lớp cha và thêm các thành phần mới hoặc sửa đổi các thành phần đã có để phù hợp với mục đích sử dụng mới. Đây là đáp án đúng.
C. Redefinition (Định nghĩa lại): Việc định nghĩa lại một phương thức (method) trong một lớp con (subclass) để thay đổi hành vi của nó so với lớp cha (superclass). Mặc dù có liên quan đến việc thay đổi mục đích, nhưng nó là một phần của cơ chế kế thừa chứ không phải là khái niệm bao trùm.
D. Overloading (Nạp chồng): Cho phép định nghĩa nhiều phương thức có cùng tên nhưng khác nhau về tham số trong cùng một lớp. Không liên quan trực tiếp đến việc tái sử dụng đối tượng cho mục đích khác.
A. Information hiding (Tính che giấu thông tin): Là nguyên tắc ẩn các chi tiết triển khai bên trong một đối tượng và chỉ hiển thị giao diện cần thiết cho người dùng. Không liên quan trực tiếp đến việc tái sử dụng đối tượng cho mục đích khác.
B. Inheritance (Tính kế thừa): Cho phép một lớp (class) mới kế thừa các thuộc tính và phương thức từ một lớp đã có (lớp cha). Lớp mới có thể tái sử dụng các thành phần của lớp cha và thêm các thành phần mới hoặc sửa đổi các thành phần đã có để phù hợp với mục đích sử dụng mới. Đây là đáp án đúng.
C. Redefinition (Định nghĩa lại): Việc định nghĩa lại một phương thức (method) trong một lớp con (subclass) để thay đổi hành vi của nó so với lớp cha (superclass). Mặc dù có liên quan đến việc thay đổi mục đích, nhưng nó là một phần của cơ chế kế thừa chứ không phải là khái niệm bao trùm.
D. Overloading (Nạp chồng): Cho phép định nghĩa nhiều phương thức có cùng tên nhưng khác nhau về tham số trong cùng một lớp. Không liên quan trực tiếp đến việc tái sử dụng đối tượng cho mục đích khác.
Lời giải:
Đáp án đúng: C
Biến `static` trong một lớp (class) có nghĩa là biến đó thuộc về chính lớp chứ không phải thuộc về bất kỳ một đối tượng (instance) cụ thể nào của lớp đó. Điều này dẫn đến một số hệ quả quan trọng:
* Chỉ có một bản sao duy nhất: Tất cả các đối tượng của lớp đó đều dùng chung một bản sao duy nhất của biến `static`. Do đó, nếu một đối tượng thay đổi giá trị của biến `static`, sự thay đổi này sẽ ảnh hưởng đến tất cả các đối tượng khác của lớp đó.
* Không phụ thuộc vào đối tượng: Biến `static` tồn tại ngay cả khi không có đối tượng nào của lớp được tạo ra. Nó có thể được truy cập thông qua tên lớp, ví dụ: `TenLop.tenBienStatic`.
Phân tích các phương án:
* A. Mỗi instance của class sẽ có bản sao riêng của biến: Sai. Đây là đặc điểm của biến instance (không phải static).
* B. Thay đổi biến ở một instance sẽ không ảnh hưởng đến instance khác của class: Sai. Vì tất cả các instance dùng chung một bản sao của biến static.
* C. Thay đổi biến ở một instance sẽ không ảnh hưởng đến instance khác của class: Sai. Lặp lại phương án B.
* D. Mọi instance của class phải cân nhắc giá trị của biến static trước khi khởi tạo: Sai. Việc khởi tạo biến static không phụ thuộc vào các instance và không cần instance nào phải cân nhắc giá trị của nó trước khi khởi tạo.
* Chỉ có một bản sao duy nhất: Tất cả các đối tượng của lớp đó đều dùng chung một bản sao duy nhất của biến `static`. Do đó, nếu một đối tượng thay đổi giá trị của biến `static`, sự thay đổi này sẽ ảnh hưởng đến tất cả các đối tượng khác của lớp đó.
* Không phụ thuộc vào đối tượng: Biến `static` tồn tại ngay cả khi không có đối tượng nào của lớp được tạo ra. Nó có thể được truy cập thông qua tên lớp, ví dụ: `TenLop.tenBienStatic`.
Phân tích các phương án:
* A. Mỗi instance của class sẽ có bản sao riêng của biến: Sai. Đây là đặc điểm của biến instance (không phải static).
* B. Thay đổi biến ở một instance sẽ không ảnh hưởng đến instance khác của class: Sai. Vì tất cả các instance dùng chung một bản sao của biến static.
* C. Thay đổi biến ở một instance sẽ không ảnh hưởng đến instance khác của class: Sai. Lặp lại phương án B.
* D. Mọi instance của class phải cân nhắc giá trị của biến static trước khi khởi tạo: Sai. Việc khởi tạo biến static không phụ thuộc vào các instance và không cần instance nào phải cân nhắc giá trị của nó trước khi khởi tạo.
Lời giải:
Đáp án đúng: C
Một lớp được gọi là abstract (trừu tượng) khi nó chứa ít nhất một phương thức trừu tượng (abstract method). Một phương thức trừu tượng là một phương thức được khai báo nhưng không được định nghĩa (không có phần thân). Trong C++, một phương thức trừu tượng được khai báo bằng cách gán nó bằng 0 ( `= 0`).
* Phương án A sai: Một lớp abstract không nhất thiết phải không có phương thức nào. Nó có thể có cả phương thức abstract và phương thức không abstract.
* Phương án B sai: Constructor của lớp abstract có thể có tham số hoặc không, không có yêu cầu bắt buộc nào.
* Phương án C đúng: Đây là cách khai báo một phương thức thuần ảo (pure virtual function) trong C++, khiến lớp trở thành abstract. Một lớp có chứa ít nhất một phương thức thuần ảo là một lớp trừu tượng.
* Phương án D sai: Lớp abstract không chỉ tồn tại trong giai đoạn thiết kế. Nó có thể được sử dụng để tạo các lớp con cụ thể, nhưng không thể tạo trực tiếp đối tượng từ lớp abstract.
* Phương án A sai: Một lớp abstract không nhất thiết phải không có phương thức nào. Nó có thể có cả phương thức abstract và phương thức không abstract.
* Phương án B sai: Constructor của lớp abstract có thể có tham số hoặc không, không có yêu cầu bắt buộc nào.
* Phương án C đúng: Đây là cách khai báo một phương thức thuần ảo (pure virtual function) trong C++, khiến lớp trở thành abstract. Một lớp có chứa ít nhất một phương thức thuần ảo là một lớp trừu tượng.
* Phương án D sai: Lớp abstract không chỉ tồn tại trong giai đoạn thiết kế. Nó có thể được sử dụng để tạo các lớp con cụ thể, nhưng không thể tạo trực tiếp đối tượng từ lớp abstract.
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

FORM.08: Bộ 130+ Biểu Mẫu Thống Kê Trong Doanh Nghiệp
136 tài liệu563 lượt tải

FORM.07: Bộ 125+ Biểu Mẫu Báo Cáo Trong Doanh Nghiệp
125 tài liệu585 lượt tải

FORM.06: Bộ 320+ Biểu Mẫu Hành Chính Thông Dụng
325 tài liệu608 lượt tải

FORM.05: Bộ 330+ Biểu Mẫu Thuế - Kê Khai Thuế Mới Nhất
331 tài liệu1010 lượt tải

FORM.04: Bộ 240+ Biểu Mẫu Chứng Từ Kế Toán Thông Dụng
246 tài liệu802 lượt tải

CEO.22: Bộ Tài Liệu Quy Trình Kiểm Toán, Kiểm Soát Nội Bộ Doanh Nghiệp
138 tài liệu417 lượt tải
ĐĂNG KÝ GÓI THI VIP
- Truy cập hơn 100K đề thi thử và chính thức các năm
- 2M câu hỏi theo các mức độ: Nhận biết – Thông hiểu – Vận dụng
- Học nhanh với 10K Flashcard Tiếng Anh theo bộ sách và chủ đề
- Đầy đủ: Mầm non – Phổ thông (K12) – Đại học – Người đi làm
- Tải toàn bộ tài liệu trên TaiLieu.VN
- Loại bỏ quảng cáo để tăng khả năng tập trung ôn luyện
- Tặng 15 ngày khi đăng ký gói 3 tháng, 30 ngày với gói 6 tháng và 60 ngày với gói 12 tháng.
77.000 đ/ tháng