C++的友元

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012581760/article/details/87706840
友元:
     友元包括友元函数和友元类
     如果将函数A(非成员函数)声明为类C的友元函数,那么函数A就能直接访问类C对象的所有成员.
     如果将类A声明为类C的友元类,那么类A的所有成员函数都能直接访问类C对象的所有成员.
     友元破坏了面向对象的封装性,但在某些频繁访问成员变量的地方可以提高性能.

 class Point {
         friend Point add(const Point &,const Point &);
         friend class Math;
         int m_x;
         int m_y;
         public:
         int getX() const {return this->m_x;};
         int getY() const {return this->m_y;};
         Point(int x,int y):m_x(x),m_y(y){}
     };
     
     
     class Math {
     public:
         Point sub(const Point &point1,const Point &point2){
         return Point(point1.getX() - point2.getX(),point1.getY() - point2.getY());
         或者变为友元可以写为:
         return Point(point1.m_x - point2.m_x,point1.m_y - point2.m_y);
         }
     }
     
     Point add(const Point &point1,const Point &point2){
         return Point(point1.getX() + point2.getX(),point1.getY() + point2.getY());
         或者变为友元可以写为:
         return Point(point1.m_x - point2.m_x,point1.m_y - point2.m_y);
     }
     
     
     int main() {
         Point point1(10,20);
         Point point2(20,30);
     
         Point point = add(point1,point2);
     
         cout << << endl;
         getchar();
         return 0;
     }

猜你喜欢

转载自blog.csdn.net/u012581760/article/details/87706840