位置:首页 > 高级语言 > C++在线教程 > C++友元函数

C++友元函数

类的友元函数的定义类之外的范围,但它来访问类的所有private和protected成员。尽管原型友元函数出现在类的定义,友元(friend)不是成员函数。

友元可以是一个函数,函数模板或成员函数,或类或类模板,在这种情况下,整个类及其所有成员都是友元。

声明函数为一个类的友元,先于函数原型与关键字的友元类的定义如下:

class Box
{
   double width;
public:
   double length;
   friend void printWidth( Box box );
   void setWidth( double wid );
};

声明类ClassTwo的所有成员函数作为友元类ClassOne,下面是声明类ClassOne的定义:

friend class ClassTwo;

考虑下面的程序:

#include <iostream>
 
using namespace std;
 
class Box
{
   double width;
public:
   friend void printWidth( Box box );
   void setWidth( double wid );
};

// Member function definition
void Box::setWidth( double wid )
{
    width = wid;
}

// Note: printWidth() is not a member function of any class.
void printWidth( Box box )
{
   /* Because printWidth() is a friend of Box, it can
    directly access any member of this class */
   cout << "Width of box : " << box.width <<endl;
}
 
// Main function for the program
int main( )
{
   Box box;
 
   // set box width without member function
   box.setWidth(10.0);
   
   // Use friend function to print the wdith.
   printWidth( box );
 
   return 0;
}

让我们编译和运行上面的程序,这将产生以下结果:

Width of box : 10