友元初步(7.2.1节)
作用
友元打破封装,注意友元不是成员,无视private的控制,更无视其他访问级别了。
声明方法
类里面加friend声明一次(仅代表声明访问权限,不是真正的声明),类外还要再声明一次。
友元再探(7.3.4节)
把其他非成员函数作为友元
略
把其他类作为友元
友元类完全可以访问Screen类的所有成员。
class Screen
{
friend class windows_mgr;
};
把其他类的成员函数作为友元
注意clear函数必须在Screen前面声明。声明顺序较复杂,自己查查
class Screen
{
friend void windows_mgr::clear(ScreenIndex);
};
友元声明的意义
友元声明还是那句话,不代表真正的声明
struct X
{
friend void f(){} //定义完了,但是不叫声明
void g();
void h();
};
void X::g()
{
return f(); //xxx,没有声明
}
void f();
void X::h()
{
return f(); //声明了
}