Latest web development tutorials

C ++ friend-Funktion

C ++ Klasse & Objekte C ++ Klasse & Objekte

Klasse Friend-Funktion außerhalb der Klasse definiert, aber die Klasse hat Zugriff auf alle privaten (privat) Mitglieder und Schutz (geschützt) Mitglieder. Obwohl die Prototyp-friend-Funktionen in der Klasse definiert erschienen, aber der Freund Funktion ist kein Mitglied Funktion.

Freund kann eine Funktion sein, die der Freund-Funktion aufgerufen wird, Freund kann auch eine Klasse sein, die der Freund-Klasse, in diesem Fall aufgerufen wird, die Klasse als Ganzes und alle ihre Mitglieder sind ein Freund.

Wenn Sie eine Funktion als Freund einer Klasse deklarieren möchten, müssen Sie ein Schlüsselwort vor dem FunktionsprototypFreund in der Klassendefinition zu verwenden, wie folgt:

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

Alle Mitglieder der Klassendeklaration ClassTwo Funktion als eine Art ClassOne Freund, müssen in der Klassendefinition ClassOne die folgende Anweisung gesetzt werden:

friend class ClassTwo;

Betrachten Sie das folgende Programm:

#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;
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt es die folgenden Ergebnisse:

Width of box : 10

C ++ Klasse & Objekte C ++ Klasse & Objekte