狄泰C++课程学习笔记:第二十八课:友元friend

1、什么是友元?

友元,更多的表征的是一种关系,这种关系可以发生在全局函数和某个类之间,也可以发生在类和类之间

通俗来说,

        * 友元发生在全局函数和某个类之间时:如果我们将一个普通的全局函数声明成为了某个类的友元函数,则该函数则可以无限制(不受访问级别属性的限制)的访问类中的所有成员变量(当然,这种特性的出现,毫无疑问的破坏了我们现有类的封装性,因此,在实际的工程项目中,我们一定要慎用友元

         * 友元发生在类和类之间时:如果我们把类A声明成为了类B的友元类,则在类A中可以无限制的访问B中的所有成员变量

注:友元关系是单向的,以friend开头的声明为准来建立单向友元关系

       友元关系不存在传递性,即A是B的友元,B是C的友元,但如果没有显示声明A是C的友元的话,A和C就没有任何友元关系

小例如下:

  1 #include <stdio.h>
  2
  3 class Point
  4 {
  5     double x;
  6     double y;
  7 public:
  8     Point(double x, double y)
  9     {
 10         this->x = x;
 11         this->y = y;
 12     }
 13
 14     friend double getX(const Point& p);
 15     friend double getY(const Point& p);
 16 };
 17
 18 double getX(const Point& p)
 19 {
 20     return p.x;
 21 }
 22
 23 double getY(const Point& p)
 24 {
 25     return p.y;
 26 }
 27
 28 int main(int argc, char** argv)
 29 {
 30     Point p1(1, 2);
 31
 32     printf("p1.x = %f\n", getX(p1));
 33     printf("p1.y = %f\n", getY(p1));
 34
 35     return 0;
 36 }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值