Latest web development tutorials

funzione friend C ++

C ++ Class & Objects C ++ Class & Objects

Funzione amico classe è definita al di fuori della classe, ma la classe ha accesso a tutti i membri privati ​​(private) e di protezione (protette) membri. Anche se l'amico funzioni prototipo definite nella classe è apparso, ma la funzione amico non è una funzione membro.

Friend può essere una funzione che viene chiamata la funzione amico, amico può anche essere una classe che viene chiamato amico di classe, in questo caso, la classe nel suo insieme e tutti i suoi componenti sono un amico.

Se si desidera dichiarare una funzione come un amico di una classe, è necessario utilizzare una parola chiave primal'amico prototipo di funzione nella definizione della classe, come segue:

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

Tutti i membri della funzione ClassTwo dichiarazione di classe come una sorta di amico ClassOne, devono essere collocati nella definizione della classe ClassOne la seguente dichiarazione:

friend class ClassTwo;

Si consideri il seguente programma:

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

// 成员函数定义
void Box::setWidth( double wid )
{
    width = wid;
}

// 请注意:printWidth() 不是任何类的成员函数
void printWidth( Box box )
{
   /* 因为 printWidth() 是 Box 的友元,它可以直接访问该类的任何成员 */
   cout << "Width of box : " << box.width <<endl;
}
 
// 程序的主函数
int main( )
{
   Box box;
 
   // 使用成员函数设置宽度
   box.setWidth(10.0);
   
   // 使用友元函数输出宽度
   printWidth( box );
 
   return 0;
}

Quando il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:

Width of box : 10

C ++ Class & Objects C ++ Class & Objects