C++学习_友元
友元
友元函数
1.概念:在当前类以外定义的、不属于当前类的函数也可以在类中声明,但要在前面加 friend 关键字,这样就构成了友元函数。友元函数可以是不属于任何类的非成员函数,也可以是其他类的成员函数。
2.特性:友元函数可以访问当前类中的所有成员(private ,public,protected)
注::
如果某个全局函数要访问指定类的私有成员,则要在指定类中将该成员函数声明为该类的友元函数。友元类
将整个类声明为另一个类的“友元”,这就是友元类。友元类中的所有成员函数都是另外一个类的友元函数。
注:
要在B类中访问A类的成员,则可在A类中将B类声明为A类的友元类。
注意:
- 虽然友元函数在类中声明,但是友元函数不是类的成员函数,所以友元函数的参数表中没有隐含的this指针
- 友元函数可以在类中的任何地方声明,不受到访问权限符的限制
- 一个函数可以是多个类的友元函数
- 友元函数和普通函数的调用方式相同
- 友元关系不能被继承
- 友元的关系是单向的而不是双向的。如果声明了类 B 是类 A 的友元类,不等于类 A 是类 B 的友元类,类 A 中的成员函数不能访问类 B 中的 private 成员
- 友元的关系不能传递。如果类 B 是类 A 的友元类,类 C 是类 B 的友元类,不等于类 C 是类 A 的友元类。