类的私有成员只能被该类的成员函数和该类的friend函数访问:类的保护成员只能被该类或者其派生类的成员函数和该类的friend函数访问。
※插曲C++中成员限制符号的作用
private 限制本类的成员,只能被本类成员自己访问
protected 限制本类的成员,只能被本类成员或继承类成员访问
public 开放本类的成员,内部外部都可以用
friend 向外部函数开放本类私有或保护成员
一个friend使用的例子:
class C{
//......
friend int f();// friend函数
//......
};
因为f函数不是C的成员函数,所以f放在类的public,protected或者是private各个部分都是可以的。
friend函数不是类的成员却可以访问类的私有成员或者是保护成员,这个面向对象的设计思想是违背的,这样可能会造成误用。我们建议仅仅在重载操作符的时候使用。