miércoles, 16 de septiembre de 2015

Funcion friend (funcion amiga) Ejemplo

Una function friend de una clase se define fuera de la clase, pero tiene derecho accesar a los datos privados de la clase. Las funciones amiga no son funciones miembro de la clase.
Las funciones amiga permite que el ocultamiento de información sea  eliminado, porque pueden modificar un dato privado.

Codificacion CodeBlocks

#include <iostream>
using namespace std;
class Circulo
{
private:
    double radio;
    friend void estRadio(Circulo &, double rad);  //prototipo function amiga
public:
    Circulo(double rad);
    Circulo();
    void estableceRadio(double rad);
    double areaCirculo();
    void imprimeDatosCirculo();
};
Circulo::Circulo(double rad)
{
    radio=rad;
}
Circulo::Circulo()
{
    radio=0;
}
void Circulo::estableceRadio(double rad)
{
    radio=rad;
}
double Circulo::areaCirculo()
{
    return 3.1416*radio*radio;
}
void Circulo::imprimeDatosCirculo()
{
    cout<<"\n\nDatos del circulo\n";
    cout<<"Radio: "<<radio<<endl;
    cout<<"Area: "<<areaCirculo()<<endl;
}
void estRadio(Circulo &c, double val)  //implementacion de function amiga
{
    c.radio=val;
}
int main()
{
    Circulo c1;
    estRadio(c1,15.0);   //acceso al objeto c1 para dar el valor del radio
    c1.imprimeDatosCirculo();
    c1.estableceRadio(20.5);
    c1.imprimeDatosCirculo();
    return 0;
}

2 comentarios:

  1. por qué el simbolo "&" aquí ?:
    friend void estRadio(Circulo &, double rad);

    ResponderEliminar
  2. Wynn Casino Resort - Hotel WiFi in and Near Me - JMT Hub
    This casino 창원 출장마사지 resort 여수 출장샵 offers 10 table games, live 토토 사이트 entertainment, and a poker room. Click here 포천 출장샵 for more 김포 출장마사지 information.

    ResponderEliminar