친구 기능

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); } 

레퍼런스

  1. ^ 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.)

외부 링크