Latest web development tutorials

ami la fonction C

Classe C ++ & Objets Classe C ++ & Objets

fonction de classe ami est définie en dehors de la classe, mais la classe a accès à tous les membres privés (privés) et la protection des membres (protégés). Bien que les fonctions amies prototypes définies dans la classe sont apparus, mais la fonction d'ami n'est pas une fonction de membre.

Ami peut être une fonction qui est appelée la fonction d'ami, ami peut aussi être une classe qui est appelé l'ami de classe, dans ce cas, la classe dans son ensemble et tous ses membres sont un ami.

Si vous voulez déclarer une fonction comme un ami d'une classe, vous devez utiliser un mot - clé avantl'ami prototype de fonction dans la définition de la classe, comme suit:

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

Tous les membres de la fonction ClassTwo de déclaration de classe comme une sorte de ClassOne ami, doivent être placés dans la définition de la classe ClassOne la déclaration suivante:

friend class ClassTwo;

Considérez le programme suivant:

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

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants:

Width of box : 10

Classe C ++ & Objets Classe C ++ & Objets