ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Sobrecarga De Operadores


Enviado por   •  19 de Octubre de 2012  •  2.119 Palabras (9 Páginas)  •  394 Visitas

Página 1 de 9

Funciones Amigas

Habrá momentos en los que se quiera que una función tenga acceso a los miembros privados de una clase sin que esa función sea realmente un miembro de esa clase. De cara a esto están las funciones amigas. Son útiles para la sobrecarga de operadores y la creación de ciertos tipos de funciones E/S.

El prototipo de esta funciones viene precedido por la palabra clave friend, cuando se desarrolla la función no es necesario incluir friend. Una función amiga no es miembro y no se puede calificar mediante un nombre de objeto. Estas funciones no se heredan y pueden ser amigas de más de una clase.

PROTOTIPO:

friend tipo_devuelto nombre(parametros);

DESARROLLO:

tipo_devuelto nombre(parametros){

cuerpo;

}

#include <iostream.h>

#include <stdio.h>

#include <conio.h>

class miclase{

int n,d;

public:

miclase(int i, int j)

{

n=i;d=j;

}

friend int factor(miclase ob);

};

int factor(miclase ob)

{

if (!(ob.n%ob.d))

return 1;

else

return 0;

}

void main()

{

miclase obj1(10,2), obj2(3,2);

if(factor(obj2))

cout << "es factor";

else

cout << "no es factor";

getch();

}

Sobre Carga de Operadores

En programación, un operador sobrecargado es un caso específico de polimorfismo en donde algunos o todos los operadores (como +, =, o ==) tienen diferentes implementaciones dependiendo del contexto en que se usen (o sea, depende del tipo de dato de sus argumentos).

#include<stdio.h>

#include<iostream.h>

class binario{

float x;

public:

binario(){x=0.0;}

binario(float a){x=a;}

binario operator+(binario);

void visualizar(){cout<<"la suma es: " <<x<<"\n";}

};

binario binario::operator+(binario a)

{

return x+a.x;

}

main()

{

float s,y,z,ss;

cout<<"Introdusca el valor 1:";

cin>>s;

cout<<"Introdusca el valor 2:";

cin>>y;

cout<<"Introdusca el valor 1:";

cin>>z;

cout<<"Introdusca el valor 1:";

cin>>ss;

binario primero=s,segundo=y,tercero=z,cuarto=ss,a;

a=cuarto+tercero+primero + segundo;

a.visualizar();

return 0;}

#include <iostream.h>

class caja

{

int longitud;

int ancho;

public:

void coloca(int l, int w) {longitud = l; ancho = w;}

int obtiene_area(void) {return longitud * ancho;}

friend caja operator+(caja a, caja b); // Suma dos cajas

friend caja operator+(int a, caja b); // Suma una constante a una caja

friend caja operator*(int a, caja b); // Multiplica caja por una constante

};

caja operator+(caja a, caja b) // Suma el ancho de dos cajas

{

caja temp;

temp.longitud = a.longitud;

temp.ancho = a.ancho + b.ancho;

return temp;

}

caja operator+(int a, caja b) // Suma una constante a caja

{

caja temp;

temp.longitud = b.longitud;

temp.ancho = a + b.ancho;

return temp;

}

caja operator*(int a, caja b) // Multiplica caja por una constante

{

caja temp;

temp.longitud = a * b.longitud;

temp.ancho = a * b.ancho;

return temp;

}

int main()

{

...

Descargar como (para miembros actualizados)  txt (13.9 Kb)  
Leer 8 páginas más »
Disponible sólo en Clubensayos.com