Изучив функцию друга, давайте еще раз посмотрим на класс друга. Тот же принцип и использование. Если класс 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:doubleG etX(Point&A){cout<<Ax<<endl;returnA.x;}doubleGetY(Point&A){cout<<Ay<<endl;returnA.y;}doubledis(Point&A){cout<<sqrt(A) x*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, и вы увидите, как его использовать.
Пожалуйста, оцените роль друзей и поймите значение друзей.
Наконец, мы резюмируем преимущества и недостатки механизма друзей следующим образом:
Преимущества : Более удобный и быстрый доступ к закрытым членам внутри класса.
Недостатки : Ломает идею инкапсуляции в C++.
Пожалуйста, используйте друзей с умом!