Latest web development tutorials

Funkcja przyjaciela C ++

C ++ klasy i obiekty C ++ klasy i obiekty

Klasa przyjaciel funkcja jest zdefiniowana poza klasy, ale klasa ma dostęp do wszystkich prywatnych (prywatnych) członków i ochrony (chronione) członków. Chociaż funkcje przyjaciel prototypowe zdefiniowane w klasie pojawił się, ale funkcja przyjaciel nie jest funkcją członkiem.

Przyjaciel może być funkcja, która jest wywoływana funkcja przyjaciela; przyjaciel może być również klasa, która nazywana jest klasa przyjaciel, w tym przypadku, klasa jako całość, a wszyscy jej członkowie są przyjacielem.

Jeśli chcesz, aby zadeklarować funkcję jako przyjaciel klasy, trzeba użyć słowa kluczowego przedznajomego prototypu funkcji w definicji klasy, co następuje:

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

Wszyscy członkowie funkcji ClassTwo deklaracji klasy jako rodzaj ClassOne znajomego, muszą być umieszczone w definicji klasy ClassOne następujące oświadczenie:

friend class ClassTwo;

Rozważmy następujący program:

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

Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:

Width of box : 10

C ++ klasy i obiekty C ++ klasy i obiekty