C++教程:C++友元函数讲解

2020-01-06 12:35:47王冬梅
私有成员数据除了可能被别的类访问之外,也可能被别的函数或别的类的部分成员函数访问。为了保证类的封装性,我们可以以函数作为单位,“对外开放”类的私有成员。与声明友元类类似,如果我们想用函数访问链表结点类的私有成员数据,则那些函数必须得到链表结点类的认可。声明友元函数的语句格式为:
    friend 返回值类型函数名(参数表);
如果该函数是某个类的成员函数,则语句格式为:
    friend 返回值类型类名::函数名(参数表);

需要注意的是,在声明友元成员函数时,可能会牵扯出一系列的类的声明顺序问题。当类的结构本身就比较复杂时,友元的使用可能会使得这个问题愈加突出。
下面我们就用友元函数来输出一个结点的信息:(程序16.2.2)
//node.h
class Node
{
   friend class Linklist; //在Node类中声明友元类Linklist
   friend void ShowNode(Node &n);//声明友元函数ShowNode
   public:
   Node();
   Node(Node &n);
   Node(int i,char c='0');