关键字friend
一、友元函数:函数func声明成类A的友元函数,那么func这个函数就能访问类A的所有成员,不受三种权限限制。
二、友元类:A类可以把B类(其它类)定义成友元类。如果B是A的友元类那么,那么B就可以在自己的成员函数中访问A类的所有成员,不受三种权限限制。
- 友元关系不能被继承
- 友元关系是单向的如B是A的友元类,但不代表A是B的友元类。
- 友元关系没有传递性,比如类B是类A的友元类,类C是类B的友元,并不代表C是A的友元类。
三、友元成员函数(即是成员函数也是友元函数)
只有public的函数才能成为其他类的友元函数
优点:
允许在特定情况下,某些非成员函数访问类的protected,private,从而提出友元这么一个概念,使方位protected、private成员更方便
缺点:
破坏了类的封装性,降低了类的可靠性和可维护性。