C++ 友元函数

C++ 友元函数

类的友元函数在类的作用域之外定义,但它有权访问类的所有私有和受保护成员。即使友元函数的原型出现在类定义中,友元函数并不是成员函数。

友元可以是函数、函数模板或成员函数,或者是类或类模板,如果是这种情况,整个类及其所有成员都是友元。

要将函数声明为类的友元,请在类定义中的函数原型前加上关键字 friend ,如下所示−

class Box {
   double width;

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

要将ClassOne类的所有成员函数声明为ClassTwo类的友元函数,请将以下声明放在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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程