• Ir al contenido
  • Ir a la navegación
  • Ir al buscador
 
Portada Boludo
ING English
Directorio WAP para móvil, Tablet, iPhone o Smartphone

Centro de Noticias de la Universidad de Oriente

Categorías

 

Inicio  |  Contacto  |  Posts  |  TIENDA PUBLISHOP  |  Sobre nosotros  |  Registro y Planes  |  Pagos  |  Donaciones

Ver Código QR de esta página

Campaña #AyudemosaYuli  |  Campaña #AyudemosaStephany.  |  ¿Interesado(a) en cursos y resolución de ejercicios de materias prácticas? Para más información, contáctenos por: Teléfono: +58 (412) - 8226575. WhatsApp y Telegram: +58 (426) - 6836955 o escriba al correo: [email protected]. Únete al grupo: SISTEMAS (UDOMO).

[»] **Musica para tu celular

WEB TRANSLATOR

LINK for English Language

Use this link for translate into English


+ Buscar en BolUDO

 

Funciones amigas (friend)

Tweet
 

lunes julio 11, 2016

El lenguaje C++ es compatible y hereda todas las características del lenguaje C. El lenguaje C es un lenguaje estructurado y solo permite definir funciones (no existen las clases).

En C++ seguimos pudiendo definir funciones independientes fuera de una clase pero no es conveniente para una buena organización de nuestro código.

En algunas situaciones puede ser conveniente definir una función independiente pero que tenga acceso a los atributos privados y protegidos de una clase, esto se logra con las funciones amiga (friend)

Para definir una función amiga debemos anteceder la palabra clave friend y cuando la llamamos como realmente no pertenece a la clase sino que es amiga la invocamos por su nombre y no antecedemos un nombre de objeto.

Problema:

Crear una clase llamada Temperatura que permita inicializar la temperatura mínima, máxima y actual. Definir una función amiga que reciba dos objetos de la clase Temperatura y retorne la temperatura promedio actual.

Programa:

#include<iostream>

using namespace std;

class Temperatura {
    int minima, maxima, actual;
public:
    Temperatura(int min, int max, int act){ minima = min; maxima = max; actual = act; }
    friend int temperaturaMedia(Temperatura t1, Temperatura t2);
};

int temperaturaMedia(Temperatura t1, Temperatura t2)
{
    int pro =(t1.actual + t2.actual)/2;
    return pro;
}

void main()
{
    Temperatura temperatura1(10, 20, 15);
    Temperatura temperatura2(12, 25, 17);
    cout << "La temperatura promedio de las temperaturas actuales es:";
    cout << temperaturaMedia(temperatura1, temperatura2);
    cin.get();
}

Este proyecto lo puede descargar en un zip desde este enlace :

FuncionAmiga1.zip

Hemos definido tres atributos en la clase Temperatura y como vemos son privados ya que no le antecedemos ningún modificador de acceso (private, public, protected):

class Temperatura {
    int minima, maxima, actual;

El constructor inicializa los tres atributos con los valores de los parámetros y lo definimos inline (es decir lo codificamos en la misma declaración de la clase):

public:
    Temperatura(int min, int max, int act){ minima = min; maxima = max; actual = act; }

La función amiga la declaramos dentro de la clase pero realmente no pertenece a la misma, pero puede acceder a los atributos, recibe como parámetros dos objetos de la clase Temperatura:

    friend int temperaturaMedia(Temperatura t1, Temperatura t2);

La codificación de la función amiga nos deja bien en claro que no pertenece a la clase Temperatura y por lo mismo no le antecedemos dicho nombre:

int temperaturaMedia(Temperatura t1, Temperatura t2)
{
    int pro =(t1.actual + t2.actual)/2;
    return pro;
}

Dentro del algoritmo de la función temperaturaMedia podemos acceder al atributo actual de cada objeto de la clase Temperatura gracias a que esta función es amiga (friend) de dicha clase.

Si no declaramos a esta función friend de la clase Temperatura se genera un error sintáctico cuando tratamos de acceder a los atributos t1.actual+t2.actual.

En la función main creamos dos objetos de la clase Temperatura:

    Temperatura temperatura1(10, 20, 15);
    Temperatura temperatura2(12, 25, 17);

Y es muy importante entender que cuando llamamos a una función amiga lo hacemos directamente por su nombre y no le antecedemos ningún nombre de objeto:

    cout << temperaturaMedia(temperatura1, temperatura2);

Es decir la función temperaturaMedia es una función que no pertenece a la clase Temperatura pero se le ha dado el privilegio de poder acceder a sus atributos en el caso que defina o reciba como parámetros objetos de la clase Temperatura.

— @bolUDOoficial

— Síguenos en Twitter@bolUDOoficial

Categorías: #C++, #


[0] Atrás | Directorio
« Inicio
Apps Infoudo
Apps Infoudo ¡Descarga el icono directo en el menú de tu equipo!
[»] Las mejores Apps para tu celular
[»] Imágenes Gratis


Comenta o lee lo que otros opinan

COMPÁRTELO:

Indica que te gusta y comparte

Me Gusta :)Facebook Tuiteame :)Twitter .WhatsApp .Telegram . LinkedIn

También te puede interesar:

NOCIONES BÁSICAS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS.
Material de Apoyo del Curso de Programación - Lenguaje C++ - Periodo (Feb - May) del año en curso
Parámetros por valor y por referencia de objetos
Parámetros por valor y por referencia de datos simples
Métodos constantes (const)
Parámetros de un método constante (const)
Definición de constantes (const)
Directiva #define
Puntero this
Métodos estáticos de una clase


« Métodos inline  |  Clases amigas (friend) »
 
Apps Infoudo
 
Buscador:
Powered by Google:


Web móvil
Imágenes
La Web

 

Síguenos por RSS


Puedes leerlos mediante el navegador Firefox, lectores de noticias en la computadora o el móvil o usando el servicio de Feedburner de Google para recibir las notificaciones por correo electrónico.
RSS - Suscribirse usando Feedburner de Google

email Recibir las nuevas publicaciones de Boludo por email

Atom


»Ir a URL
.....
Registra Gratis Tu Negocio
....
Sugerir un nuevo sitio WAP

...
¡Bloguea Ya!

..
Registro de Profesionales(Abogados, escritores, doctores, licenciados, ingenieros, etc.)
.
Soporte

Síguenos en las redes sociales

Síguenos en Facebook facebook.com/boludooficial Síguenos en Twitter @bolUDOoficial Síguenos en Instagram @boludooficial Síguenos en Telegram t.me/Boludooficial
Síguenos en WhatsApp BolUDOoficial Síguenos en YouTube youtube.com/@boludo.oficial
Síguenos en Facebook facebook.com/SergioAlemanFans Síguenos en Twitter @SergioAleman1 Síguenos en Instagram @sergioalemanfans
Síguenos en WhatsApp wa.me/qr/Y7Q232VLZPR5O1 Síguenos en Tiktok @sergioalemanoficial Síguenos en Tiktok @sergioalemanfans
Síguenos en Telegram t.me/SergioAlemanOficial Síguenos en YouTube youtube.com/@sergioaleman
Síguenos en Facebook facebook.com/INFOUDO.OFICIAL Síguenos en Twitter @infoudomon Síguenos en Instagram @infoudooficial Síguenos en Telegram t.me/Infoudooficial
Síguenos en Facebook facebook.com/tuinfou Síguenos en Twitter @infoudomonagas
Síguenos en WhatsApp INFO UDO Síguenos en YouTube youtube.com/@infoudooficial

Mis cuentas sociales

FB
Twitter
Pinterest
Instagram
Otras

Móvil: (0426 683 6955 - 0412 8226575) - E-mail: [email protected] - [email protected] - WhatsApp: +58 (0426) 683.69.55


Copyscape
Volver arriba

Protocolo  |  Mapa del Sitio  |  Report Abuse - DMCA  |  Términos y Condiciones  |  Ayuda  |  Privacidad de Datos  |  Política de Cookies  |  Reportar un bug  |  Licencia: CC BY-NC-ND 3.0

Copyright ©2023 Boludo. Todos los derechos reservados. Diseñado y Desarrollado por Sergio Alemán Mi perfil en GitHub


SUBIR