C++中的friend关键字其实做这样的事情:在一个类中指明其他的类(或者)函数能够直接访问该类中的private和protected成员
class A
{
private: int a;
public:
const int getx()const {return a;}
friend class B;//这样B可以访问A中的private或protected
}
这属于友元类(friend classes)
还有一种是友元函数(Friend Functions):友元函数和友元类的作用是一样的,它允许一个函数不需要通过其public接口就能够访问到类中的private和protected成员变量
声明方法:
friend return_type(int/double....) class_name(类的名字)::function(args)(函数名称);
class A
{
private:
int data;
int key;
friend int B::find(); // Only B's find function has access
};
这样find方法就可以直接访问A中的私有成员变量了,而B中的其他的方法去不能够直接的访问A的成员变量。(这就是友元类和友元函数的区别)