친구 기능을 배운 후 다시 친구 클래스를 살펴보겠습니다. 동일한 원리와 사용법은 동일합니다. 클래스 A가 다른 클래스 B의 친구 클래스 로 선언되면 클래스 A의 모든 멤버 함수는 클래스 B의 멤버에 액세스할 수 있습니다. 사용 방법은 동일하며 클래스 B에서 선언하면 됩니다.
이는 여전히 이전 섹션의 프로그램 기능입니다. 몇 가지 사항을 변경해 보겠습니다.
#include<iostream>#include<math.h>usingnamespacestd;classPoint{private:doublex;doubley;public:Point(doublea,doubleb){x=a;y=b;}intGetPoint(){cout<<(<< x<<,<<y<<);return0;}intdistancetoLine(){}friendclassTool;};classTool{public:doubleGetX(Point&A){cout<<Ax<<endl;returnA.x;}doubleGetY(Point&A){ cout<<Ay<<endl;returnA.y;}doubledis(Point&A){cout<<sqrt(Ax*A.x+Ay*Ay)<<endl;returnsqrt(Ax*A.x+Ay*Ay); }};intmain(){PointA(2.0,3.0);ToolT;T.GetX(A);T.GetY(A);T.dis(A);return0;}
포인트 클래스의 수평 및 수직 좌표를 얻고 이 포인트와 원점 사이의 거리를 찾을 수 있는 또 다른 도구 클래스를 정의한 것을 볼 수 있습니다. 이는 세 가지 메소드로 구현되고 Tool 클래스에 캡슐화됩니다. 그리고 Point 클래스에 friend 클래스를 선언해 주면 어떻게 사용하는지 볼 수 있다.
친구의 역할에 감사하고 친구의 의미를 이해하시기 바랍니다.
마지막으로 프렌드 메커니즘의 장점과 단점을 다음과 같이 요약합니다.
장점 : 클래스 내 비공개 멤버에 더 편리하고 빠르게 액세스할 수 있습니다.
단점 : C++의 캡슐화 아이디어를 깨뜨립니다.
친구를 현명하게 활용해주세요!