클래스 A가 클래스 B의 친구이고 B가 클래스 C의 친구라고 가정 할 때 A의 친구 C 또는 C의 친구 또는 A의 친구 또는 둘 모두입니까?C++ 클래스간에 "friend"관계를 이전 할 수 있습니까?
3
A
답변
5
아니요, C++의 우정은 과도하지 않습니다. 는 C++ 03 표준에서
, 11.4-8은 :우정은 상속되지도 이행되지도. 예 :
class A {
friend class B;
int a;
};
class B {
friend class C;
};
class C {
void f(A* p)
{
p->a++;
// error: C is not a friend of A
// despite being a friend of a friend
}
};
class D : public B {
void f(A* p)
{
p->a++;
// error: D is not a friend of A
// despite being derived from a friend
}
};
1
없음. 그래서 클래스는 C 클래스의 친구가되지 않을 것,
친구, 이적을 상속 또는
0
C++ 클래스 우정이 방법으로 전파되지 않는 상호되지 다음 C++FAQ을 참조하십시오. 그것은 페이스 북과 같습니다, 친구 중 누군가가 누군가와 친구가된다면 그 사람은 자동으로 친구가되지 않습니다. =)
우정은 우정이나 상속으로 양도 할 수 없습니다. –
가능한 [C++의 친구 범위] (http://stackoverflow.com/questions/437250/friend-scope-in-c) –