추천, 2024

에디터의 선택

친구 기능과 친구 클래스의 차이점

Friend 함수와 friend 클래스는 friend 키워드를 사용하여 클래스의 private 멤버에 액세스하는 데 사용되는 기술입니다. friend 함수와 friend 클래스의 일반적인 차이점은 friend 함수가 사용될 때 private 클래스 멤버가 액세스 될 수 있지만 friend 클래스에서는 private 클래스 멤버가 아닌 friend 클래스의 이름 만 액세스된다는 것입니다.

기능 또는 클래스에 의해 사용되는지 여부에 관계없이 친구 기능객체 지향 패러다임에 대한 캡슐화 를 약화 시킴에 따라 객체 지향 프레임 워크에 부정적인 영향을 줄 수 있습니다. 친구 기능을 현명하게 사용해야하는 이유는 코드의 데이터 숨김깨뜨릴 수 있기 때문입니다.

이 친구의 특징은 교환 적이 거나 전이 적이 지 않습니다. X는 Y의 친구이기 때문에 Y는 X의 친구이기도합니다. X가 Y의 친구이고 Y가 Z의 친구 인 경우 X가 Z의 친구라는 것을 의미하지 않습니다.

비교 차트

비교 근거친구 기능친구 클래스
기본이것은 비 멤버 함수에 클래스의 private 멤버에 대한 액세스 권한을 부여하는 friend 키워드와 함께 사용되는 함수입니다.이 클래스는 다른 클래스의 비공개 멤버에 액세스하기 위해 friend 키워드와 함께 사용되는 클래스입니다.
전달 선언반드시 사용해야합니다.의무가 아닌.
용도오퍼레이터 오버로딩의 일부 상황에서 친구 기능을 사용할 수 있습니다.친구 클래스는 다른 클래스의 맨 위에 클래스가 생성 될 때 사용할 수 있습니다.

친구 기능의 정의

friend 함수 는 비 멤버 함수에 액세스 권한을 허용하여 클래스의 비공개 및 보호 된 멤버에 액세스하는 데 사용됩니다. 이 유형의 함수에서는 friend 키워드가 선언시 함수 이름 앞에 사용됩니다. 친구 기능에는 몇 가지 제한 조건이 적용됩니다. 첫 번째 조건은 friend 클래스가 자식 클래스에 상속되지 않는다는 것입니다. 두 번째 조건은 저장소 클래스 지정자가 friend 함수에 없을 수 있다는 것입니다. 즉, 정적 및 외부로 선언 할 수 없습니다.

friend 함수는 클래스의 호출 객체와 함께 호출되지 않습니다. friend 함수의 예는 다음과 같습니다. 전역 함수, 클래스의 멤버 함수, 함수 템플릿은 friend 함수가 될 수 있습니다. 예제를 통해 이해해 봅시다.

 #include using namespace std; 클래스 first {int data; public : first (int i) : data (i) {} friend void display (const first & a); }; void 디스플레이 (const first & a) {cout << "data ="< 

친구 클래스의 정의

friend 함수와 마찬가지로 하나의 클래스를 friend 클래스 라고하는 다른 클래스의 친구로 만들 수 있습니다. friend 클래스가 다른 클래스에 정의 된 private 멤버에 액세스 할 수 있도록합니다. 친구 클래스는 다른 클래스를 상속하는 대신 다른 클래스에 정의 된 이름에만 액세스 할 수 있다는 것을 기억해야합니다. 정확히 말하면, 1 등석의 멤버는 친구 클래스의 멤버가 될 수 없습니다. 이러한 친구 클래스는 거의 사용되지 않습니다.

friend 클래스는 하나 이상의 클래스로 선언 될 수 있습니다. 이 기능을 사용하면 여러 친구 기능을 만드는 대신 전체 데이터 멤버와 기능에 액세스 할 수있는 친구 클래스를 만들 수 있기 때문에 친구 기능에 대한 간단한 대체 방법으로 간주됩니다.

 #include using namespace std; class First {// 친구 클래스 친구 클래스 선언하기 둘째; public : First () : a (0) {} void print () {cout << "결과는"<< a << endl; } private : int a; }; class Second {public : void change (First & yclass, int x) {yclass.a = x; }}; int main () // 출력 결과는 0입니다. 결과는 5입니다. 

Friend 기능과 Friend 클래스의 주요 차이점

  1. 프렌드 함수는 클래스의 개인 및 보호 된 멤버에 액세스 할 수있는 함수입니다. 반대로, friend 클래스는 클래스의 private 멤버에 액세스하는 데 도움이되는 클래스입니다.
  2. 친구 함수는 클래스 안에 프로토 타입을 포함 시켜서 선언하고, 친구 friend라는 키워드로 시작한다. 마찬가지로 friend 클래스는 keyword friend를 사용하여 정의됩니다.
  3. forward 선언문은 friend 함수의 경우에 사용되며 friend 클래스에서는 사용할 필요가 없습니다.

결론

친구 함수는 두 개 이상의 독립적 인 클래스 인 내부 멤버에 함수가 액세스해야 할 때 필요합니다. 반면에 클래스가 다른 클래스의 멤버에 액세스해야하는 경우 friend 클래스가 필요합니다. 다중 멤버 함수가 그 함수의 친구 일 필요가있는 경우, 이 경우 friend 클래스를 사용하는 것이 낫습니다.

Top