Cho đoạn chương trình như hình trên. Thuộc tính của lớp Cong_dan được khai báo là:

Đáp án đúng: A
Cùng ôn thi với bộ câu hỏi trắc nghiệm môn Lập trình hướng đối tượng có đáp án mà tracnghiem.net chia sẽ dưới đây, nhằm giúp các bạn sinh viên chuyên ngành chuẩn bị cho kì thi sắp tới.
Câu hỏi liên quan
Trong C++, khi một lớp kế thừa từ nhiều lớp cha (đa kế thừa) và các lớp cha có cùng tên phương thức (như phương thức Xuat
trong lớp A và lớp B), sẽ xảy ra hiện tượng trùng tên (name collision). Khi đối tượng lớp con (C) gọi đến phương thức trùng tên này, trình biên dịch không thể tự động xác định được nên gọi phương thức Xuat
của lớp A hay lớp B. Do đó, trình biên dịch sẽ báo lỗi. Để giải quyết lỗi này, ta cần chỉ rõ lớp cha mà phương thức Xuat
được gọi đến, ví dụ: obj.A::Xuat()
hoặc obj.B::Xuat()
. Hoặc có thể ghi đè (override) phương thức Xuat trong lớp C để chỉ định hành vi mong muốn.
Câu hỏi đề cập đến việc chọn lọc các thuộc tính quan trọng của đối tượng thực tế để đưa vào mô hình quản lý trên máy tính. Đây chính là quá trình trừu tượng hóa dữ liệu, tức là tập trung vào những đặc điểm quan trọng nhất liên quan đến bài toán cụ thể và bỏ qua những chi tiết không cần thiết.
- A. Sự trừu tượng hóa dữ liệu: Đúng. Đây là quá trình chọn lọc và biểu diễn những đặc điểm quan trọng của đối tượng, bỏ qua những chi tiết không liên quan.
- B. Sự trừu tượng hóa chức năng: Sai. Trừu tượng hóa chức năng liên quan đến việc ẩn đi chi tiết triển khai của một hàm hoặc phương thức, chỉ cho người dùng biết chức năng của nó mà không cần biết cách nó hoạt động.
- C. Tính đa hình: Sai. Tính đa hình cho phép các đối tượng thuộc các lớp khác nhau có thể được xử lý thông qua một giao diện chung.
- D. Tính kế thừa: Sai. Tính kế thừa cho phép một lớp kế thừa các thuộc tính và phương thức từ một lớp cha.
Vậy, đáp án đúng là A.
Phương thức float KC2D(Diem D)
là một phương thức của lớp Diem
, được dùng để tính khoảng cách từ một đối tượng Diem
đến một điểm D
khác. Trong đó D
là tham số truyền vào của phương thức. Để gọi phương thức này, ta cần một đối tượng thuộc lớp Diem
, ví dụ D1
, và sau đó gọi phương thức KC2D
thông qua đối tượng này, truyền vào đối tượng Diem
thứ hai, ví dụ D2
, làm tham số. Vì vậy, cú pháp gọi đúng sẽ là D1.KC2D(D2)
. Để in ra kết quả, ta sử dụng cout << D1.KC2D(D2);
Phương án A đúng vì nó thể hiện đúng cú pháp gọi phương thức KC2D
từ một đối tượng Diem
và truyền một đối tượng Diem
khác vào làm tham số, đồng thời in kết quả ra màn hình.
Phương án B sai vì KC2D(D1, D2)
không phải là cú pháp gọi phương thức từ một đối tượng. Nó giống như một hàm độc lập, không thuộc lớp Diem
.
Phương án C sai vì KC2D(D1, D2).in()
không hợp lệ. Giả sử KC2D(D1, D2)
đúng như phương án B thì .in()
không phải là một phương thức hợp lệ để gọi sau khi tính khoảng cách.
Phương án D sai vì có một phương án đúng (phương án A).
Đoạn mã Phanso(int ts=0, int ms=1);
trong khai báo lớp Phanso
thể hiện một hàm tạo (constructor). Hàm tạo này có hai tham số: ts
(tử số) và ms
(mẫu số). Điều đặc biệt ở đây là cả hai tham số đều có giá trị mặc định: ts
mặc định là 0 và ms
mặc định là 1. Điều này có nghĩa là khi tạo một đối tượng Phanso
, ta có thể không cần truyền giá trị cho ts
và ms
, khi đó chúng sẽ tự động nhận giá trị mặc định.
- Hàm tạo sao chép tạo ra một đối tượng mới bằng cách sao chép từ một đối tượng đã tồn tại. Nó thường có dạng
Phanso(const Phanso &other);
. - Phương thức gán dùng để gán giá trị của một đối tượng cho một đối tượng khác đã tồn tại. Nó thường có dạng
Phanso& operator=(const Phanso &other);
. - Hàm tạo có tham số mặc định cho phép tạo đối tượng mà không cần cung cấp tất cả các tham số, các tham số còn thiếu sẽ lấy giá trị mặc định.
Như vậy, phương án D là đáp án chính xác nhất.
Câu hỏi đề cập đến vấn đề đa kế thừa trong lập trình hướng đối tượng, cụ thể là trường hợp lớp D kế thừa từ cả lớp B và C, mà cả B và C lại kế thừa từ lớp A. Vấn đề phát sinh khi một đối tượng của lớp D có thể có nhiều bản sao của các thành phần từ lớp A, gây ra sự mơ hồ. Để giải quyết vấn đề này, ta sử dụng khái niệm "lớp cơ sở ảo" (virtual base class). Khi B và C kế thừa A là lớp cơ sở ảo, chỉ có một bản sao duy nhất của A được chia sẻ giữa B và C thông qua D.
- Đáp án A đúng: Khai báo A là lớp cơ sở ảo đối với B và C sẽ đảm bảo rằng chỉ có một bản sao của A được kế thừa vào lớp D, tránh sự trùng lặp và mơ hồ.
- Đáp án B sai: Việc khai báo A là lớp cơ sở ảo đối với D là không cần thiết và không giải quyết được vấn đề gốc. Vấn đề cần giải quyết là sự trùng lặp giữa B và C khi cùng kế thừa A.
- Đáp án C sai: Việc chỉ khai báo A là lớp cơ sở ảo đối với B không giải quyết được vấn đề. C vẫn kế thừa A theo cách thông thường, dẫn đến D vẫn có thể có hai bản sao của A (một từ B và một từ C).
- Đáp án D sai: Lớp D vẫn có thể kế thừa các thành phần của lớp A nếu lớp B và C được khai báo kế thừa lớp A là lớp cơ sở ảo, do đó mệnh đề "Hiển nhiên lớp D không thể kế thừa lớp A" là sai.

FORM.08: Bộ 130+ Biểu Mẫu Thống Kê Trong Doanh Nghiệp

FORM.07: Bộ 125+ Biểu Mẫu Báo Cáo Trong Doanh Nghiệp

FORM.06: Bộ 320+ Biểu Mẫu Hành Chính Thông Dụng

FORM.05: Bộ 330+ Biểu Mẫu Thuế - Kê Khai Thuế Mới Nhất

FORM.04: Bộ 240+ Biểu Mẫu Chứng Từ Kế Toán Thông Dụng

CEO.22: Bộ Tài Liệu Quy Trình Kiểm Toán, Kiểm Soát Nội Bộ Doanh Nghiệp
ĐĂ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.