Tôi là một người đam mê lập trình hướng đối tượng ở cấp độ mới bắt đầu. Tôi đã gặp phải câu đố sau:Tình bạn của lớp - một câu đố
class A {
};
class B {
protected:
friend class A;
};
class C {
public:
friend class B;
};
Tham khảo mã mẫu ở trên, giả sử các lớp trên có thành viên dữ liệu, tên của thành viên C có thể được sử dụng trong khai báo của thành viên A?
thành viên Chỉ riêng
thành viên Chỉ bảo vệ
Tất cả các thành viên dữ liệu C
Chỉ thành viên nào
Không ai trong số các thành viên dữ liệu C *
Lựa chọn của tôi là câu trả lời 4 vì tình bạn không phải là chuyển tiếp. Do đó, A là bạn của B, nhưng A không phải là bạn của C (mặc dù B là bạn của C). Đó có phải là suy nghĩ đúng không?
Ngoài ra, vấn đề của tôi là cho đến nay (trong hướng dẫn) Tôi đã gặp exmaples trong đó tình bạn được tuyên bố như thế này:
class X {
public:
friend class Y;
};
sự khác biệt nếu thay vì specifier nào chúng ta sử dụng là gì được bảo vệ? Như thế:
class X {
protected:
friend class Y;
};
+1 cho câu hỏi được xây dựng tốt. – jrok