Hãy xem xét đoạn mã sau có lỗi ở dòng nào:
1. class Lopl
2. {
3. private:
4. int a,b;
5. friend voidNhapQ;
6. };
7. class Lop2
8. {
9. private:
10. float x,y;
11. friend void Nhap( );
12. };
13. void nhap()
14. {
15. Lopl objl; Lop2 obj2;
16. cout«"\n\t Nhap a -'; cin»a;
17. cout«"\n\t Nhap x ="; cin»x;
18. }
1. class Lopl
2. {
3. private:
4. int a,b;
5. friend voidNhapQ;
6. };
7. class Lop2
8. {
9. private:
10. float x,y;
11. friend void Nhap( );
12. };
13. void nhap()
14. {
15. Lopl objl; Lop2 obj2;
16. cout«"\n\t Nhap a -'; cin»a;
17. cout«"\n\t Nhap x ="; cin»x;
18. }
Trả lời:
Đáp án đúng: A
Đoạn mã C++ có một số lỗi cần được xem xét:
1. **Lỗi chính tại dòng 16 và 17:** Các biến `a` và `x` được sử dụng trong `cin >> a;` và `cin >> x;` không thuộc phạm vi của hàm `nhap()`. Trong hàm `nhap()`, `objl` (kiểu `Lopl`) và `obj2` (kiểu `Lop2`) được tạo ra, nhưng các thành viên dữ liệu `a` của `objl` và `x` của `obj2` là `private`. Hàm `nhap()` không phải là `friend` của cả hai lớp, do đó nó không thể truy cập trực tiếp các thành viên `private` này. Ngay cả khi các biến `a` và `x` được khai báo trong hàm `nhap`, thì chúng vẫn là các biến cục bộ khác với các thành viên dữ liệu `a` và `x` trong các đối tượng `objl` và `obj2`. Để khắc phục, cần làm cho hàm `nhap()` trở thành `friend` của cả hai lớp, hoặc cung cấp các hàm `public` để truy cập và sửa đổi các thành viên `private` này. Tuy nhiên, theo đoạn code được cung cấp, lỗi truy cập trực tiếp các biến thành viên private là nguyên nhân chính.
2. **Lỗi khác:** Tên lớp `Lopl` nên là `Lop1` (chữ `i` thường thay vì `l`). Tương tự, `cout«` nên là `cout <<`.
Như vậy, lỗi tập trung ở dòng 16 và 17 do cố gắng truy cập trực tiếp các thành viên private từ bên ngoài lớp mà không có quyền truy cập (không phải là hàm friend hoặc thông qua các phương thức public).
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.
50 câu hỏi 60 phút
Câu hỏi liên quan

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
