친구 기능
Friend function객체 지향 프로그래밍에서, 특정 클래스의 "친구"인 친구 함수는 개인 데이터 및 보호된 데이터에 대한 메서드와 동일한 액세스 권한을 부여하는 함수입니다.[1]
친구 함수는 액세스를 허용하는 클래스에 의해 선언되므로 친구 함수는 메서드와 마찬가지로 클래스 인터페이스의 일부입니다.Friend 함수는 예를 들어 대체 구문을 사용하여 객체를 사용할 수 있도록 합니다.f(x)
대신x.f()
, 또는g(x,y)
대신x.g(y)
Friend 함수는 캡슐화에 메서드와 같은 의미를 가집니다.
비슷한 개념은 친구 수업이다.
사용 사례
이 접근법은 함수가 두 개의 다른 클래스의 객체에 있는 개인 데이터에 액세스해야 할 때 친숙한 기능에서 사용할 수 있습니다.이는 두 가지 유사한 방법으로 수행될 수 있습니다.
- 글로벌 또는 네임스페이스 스코프의 함수는 양쪽 클래스의 친구로 선언될 수 있다
- 한 클래스의 멤버 함수는 다른 클래스의 친구로 선언될 수 있다.
#실패하다 <iostream> 사용. 네임스페이스 표준; 학급 푸우; // 예를 들어 컴파일하기 위해 클래스 Foo 선언을 전달합니다. 학급 막대 { 사적인: 인트 a = 0; 일반의: 무효 쇼우(막대& x, 푸우& y); 친구. 무효 쇼우(막대& x, 푸우& y); // 글로벌 친구 선언 }; 학급 푸우 { 사적인: 인트 b = 6; 일반의: 친구. 무효 쇼우(막대& x, 푸우& y); // 글로벌 친구 선언 친구. 무효 바::show(막대& x, 푸우& y); // 다른 클래스의 친구 선언 }; // Bar의 멤버 함수 정의. 이 멤버는 Foo의 친구입니다. 무효 바::show(막대& x, 푸우& y) { 외치다 << > "막대의 함수 멤버를 통해 표시" << > 끝; 외치다 << > "막대:a =" << > x.a << > 끝; 외치다 << > "foo::b = " << > y.b << > 끝; } // Bar와 Foo의 친구, 글로벌 함수의 정의 무효 쇼우(막대& x, 푸우& y) { 외치다 << > "글로벌 기능을 통해 표시" << > 끝; 외치다 << > "막대:a =" << > x.a << > 끝; 외치다 << > "foo::b = " << > y.b << > 끝; } 인트 주된() { 막대 a; 푸우 b; 쇼우(a,b); a.쇼우(a,b); }
레퍼런스
- ^ Holzner, Steven (2001). C++ : Black Book. Scottsdale, Ariz.: Coriolis Group. p. 397. ISBN 1-57610-777-9.
When you declare a function a friend of a class, that function has access to the internal data members of that object (that is, its protected, and private data members.)
외부 링크
- CoderSource의 C++ 친구 함수 튜토리얼.그물
- C++ 우정과 상속 튜토리얼은 cplusplus.com에서 보실 수 있습니다.