友元friend 机制允许一个类授权其他的函数访问它的非公有成员。友元声明以关键字friend 开头,它只能出现在类的声明中。由于友元不是授权友谊的类的成员,所以它们不受其在类体中被声明的public private 和protected 区的影响,这里我们选择把所有友元声明组织起来放在类头之后。
1 class Screen {
2 friend istream&
3 operator>>( istream&, Screen& );
4 friend ostream&
5 operator<< ( ostream&, const Screen& );
6 public:
7 // ... Screen 类的其他部分
8 };
一个友元可以是一个普通函数,一个前面定义的类的成员函数也可以是一个完整的类。在使一个类成为友元时友元类的所有成员函数都被给予访问授权友谊的类的非公有成员的权力
友元函数:(普通函数)
class Window {
friend bool is_equal( Screen &, Window & );
// ...
};
bool is_equal(Screen &, Window &) {
//函数中可以直接使用Window中的非公有成员
//...
}
(成员函数)
class Window;
class Screen {
public:
// copy 是类 Screen 的成员
Screen& copy( Window & );
// ...
};
class Window {
// copy 是类 Window 的一个友元
friend Screen& Screen::copy( Window & );
// ...
};
友元类:(Screen类是Window类的友元类,Screen可以访问Window中的非公有成员)
class Screen;
class Window {
friend class Screen;
};
原文链接: https://www.cnblogs.com/ruanzhao/p/3192353.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/95900
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!