Después de aprender la función de amigo, echemos un vistazo a la clase de amigo nuevamente. El mismo principio y uso son los mismos. Si una clase A se declara como clase amiga de otra clase B, entonces todas las funciones miembro de la clase A pueden acceder a los miembros de la clase B. El método de uso es el mismo, simplemente declarelo en la clase B.
Sigue siendo la función del programa de la sección anterior, hagamos algunos cambios:
#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;}
Se puede ver que hemos definido otra clase de herramienta, que puede obtener las coordenadas horizontales y verticales de una clase de punto y encontrar la distancia entre este punto y el origen. Se implementa mediante tres métodos y se encapsula en una clase Herramienta. Y declara la clase amiga en la clase Punto, y podrás ver cómo usarla.
Aprecie el papel de los amigos y comprenda el significado de amigos.
Finalmente, resumimos las ventajas y desventajas del mecanismo amigo de la siguiente manera:
Ventajas : Acceso más cómodo y rápido a miembros privados dentro de la clase.
Desventajas : Rompe la idea de encapsulación en C++.
¡Utilice a sus amigos sabiamente!