类(class)在外部不容易访问其私有成员,而友元声明却让这个操作变得如此简单,下来咱们来看看到底怎么个简单法。
友元函数:
首先,友元函数是一个函数,是指一个类,在内部声明外部普通函数为自己的友元函数,则这个普通函数具备了和这个类的友元关系。这个单向声明的关系,只具备单向的能力,即类声明该函数作为自己友元,通过该函数可以访问该类生成的对象的成员,甚至是私有成员。
基本介绍,到此结束,下面我们来看看代码的具体实现过程。
外部通常无法处理类内私有成员,然声明非成员函数作为自己友元,则具备了处理该类私有成员的权限。实现过程就是在类内声明类外部函数,并在最前端添加friend关键词,作为声明友元的标志。请观察图中代码实现。
值得注意的是,函数形参为引用类型,即函数内部处理需要获取被处理数据地址,而别名引用的操作可以达到这样的目的。
观察图,可知类内用friend声明友元函数,并且函数是类外普通函数,通过参数引用形式修改内部私有成员,这就是类和友元函数的具体定义过程了。
有前面的代码中,我们知道友元函数修改并打印了类的私有成员变量。这是友元函数具备的特有能力。黄色警示意为必须类内声明友元才能处理类内成员,否则是不可行的。
这点代码就是主函数中的类的实例化,和友元函数的调用,我们知道它修改并打印了类的私有成员变量regVar。
friend函数的典型用例是友元函数们(多个)可以处理不同(多个)的类的私有成员。
相似的,也可以声明友元类,通过一个类操作另一个类,不过个人感觉不常用,就不再赘述了,想了解的自己去查一下。
––共享知识,迎接未来,我是美玉东番。