JavaScript is required

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. }

A.

Lỗi tại dòng 16, 17

B.

Không lỗi ở dòng nào

C.

Lỗi tại dòng 15

D.
Lỗi tại dòng 13
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