Latest web development tutorials

amigo función C ++

Clase C ++ y objetos Clase C ++ y objetos

función friend clase está definida fuera de la clase, pero la clase tiene acceso a todos los miembros particulares (privados) y de protección (protegidas) miembros. Aunque las funciones amigo prototipo definidos en la clase aparecieron, pero la función de amigo no es una función miembro.

Amigo puede ser una función que se llama la función amigo, amigo también puede ser una clase que se llama la clase de amigo, en este caso, la clase en su conjunto y todos sus miembros son un amigo.

Si desea declarar una función como un amigo de una clase, es necesario utilizar una palabra clave antes de que elamigo prototipo de la función en la definición de clase, de la siguiente manera:

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

Todos los miembros de la función ClassTwo declaración de la clase como una especie de amigo ClassOne, deben ser colocados en la definición de clase ClassOne la siguiente declaración:

friend class ClassTwo;

Considere el siguiente programa:

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

Cuando el código se compila y ejecuta, produce los siguientes resultados:

Width of box : 10

Clase C ++ y objetos Clase C ++ y objetos