Điều này có hợp pháp không? Nếu không, mã sau có cho phép điều này không?Truy cập các yếu tố riêng tư của đối tượng cùng loại
class Foo
{
friend class Foo;
}
Điều này có hợp pháp không? Nếu không, mã sau có cho phép điều này không?Truy cập các yếu tố riêng tư của đối tượng cùng loại
class Foo
{
friend class Foo;
}
Đó là dự phòng. Foo đã có quyền truy cập vào tất cả các thành viên của Foo. Hai đối tượng Foo có thể truy cập các thành viên của nhau.
class Foo {
public:
int touchOtherParts(const Foo &foo) {return foo.privateparts;}
private:
int privateparts;
};
Foo a,b;
b.touchOtherParts(a);
Mã trên sẽ chỉ hoạt động tốt. B sẽ truy cập thành viên dữ liệu cá nhân của một người.
Đó là dự phòng và không cần thiết. Hơn nữa, tôi nhận được cảnh báo sau đây trong g ++
warning: class ‘Foo’ is implicitly friends with itself
Có nó là hợp pháp cho một đối tượng của lớp Foo
để truy cập các thành viên tư nhân của một đối tượng của lớp Foo
. Điều này là thường xuyên cần thiết cho những thứ như xây dựng bản sao và phân công, và không có tuyên bố người bạn đặc biệt là bắt buộc.
Các lớp học thân thiện với bản thân có ý nghĩa nếu chúng là mẫu, vì mỗi phiên âm với các tham số riêng biệt là một lớp khác.
Tại sao bạn cần điều này? – ybungalobill