C++学习笔记5

三世轮回 提交于 2020-01-05 04:44:33

1.友元

  1.定义为谁友元,就在谁的类中用关键字friend声明其要定义的友元。

  2.一些函数不是类的一部分,但又频繁访问类的数据成员,此时可定义为友元函数,也可定义友元类。

  3.友元只能发生在异类之间,同类之间无隐私。

  4.作用:提高程序的运行效率,但破坏了类之间的封装和隐藏性,使得非成员函数可以访问类的私有成员

  5.友元目的本质:不让其他不属于本类的成员,成为类的成员而具有本类成员的属性。

  6.声明为谁的友元,就能通过其对象访问其私有成员【把a定义为b的友元,则可通过b的对象访问b的私有成员】

  7.友元函数无this指针

  8.注意事项:

      1.友元关系不能被继承。

      2.友元关系是单向的不具有交换性。【a是b的友元,b不是a的友元】

      3.友元关系不具有传递性。【c是b的友元,b是a的友元,但c不是a的友元】

2.在定义友元函数时,用前向声明。

  前向声明:是一种不完全声明,即只需提供类名(无需提供类实现)。但存在限制:

      1.不能定义类的对象

      2.可以用于定义指向这个类型的指针或引用

      3.用于声明(不是定义)使用该类型,作为形参类型或函数返回类型。

  友元函数的实现过程:

    若将一个类(a)的函数声明为另一个类(b)的友元函数,则类a放在类b前面定义,且将类b进行前向声明,而若友元函数中有对类b中的成员操作,则函数只能在类a中声明,其实现在类b定义之后。

  友元类的实现:友元类只需在类中声明即可。其类中的所有的函数都为友元函数。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!