Lab04 Clases en C parte dos

Páginas: 11 (2686 palabras) Publicado: 4 de diciembre de 2015
Guía. #4

UES ­ FIA ­ EIE ­ PEL115

1/10

Universidad de El Salvador
Facultad de Ingeniería y Arquitectura
Escuela de Ingeniería Eléctrica

PROGRAMACIÓN I
Guía de Laboratorio #4
Tema: Clases en C++. Parte Dos.

Profesor:

Ing. Walter Zelaya

wzelaya@ing.ues.edu.sv
ingwzelaya­pel115@yahoo.com

Instructor:

Ing. Carlos Osmín Pocasangre

cpocasangre@ing.ues.edu.sv
copocasangre@gmail.com

CICLO II Guía. #4

UES ­ FIA ­ EIE ­ PEL115

2/10

Introducción.
Esta guía es una continuación de la anterior, por lo que se está explotando el concepto de sobrecarga de operadores y se
utiliza por primera vez el puntero this.

Objetivo.
Que los/las estudiantes puedan sobrecargar los diferentes operadores y hacer uso eficiente del puntero this.

Marco teórico.
Sobrecarga de operadores
La sobrecarga deoperadores permite redefinir ciertos operadores, como "+" y "-", para usarlos con las clases que hemos
definido. Se llama sobrecarga de operadores porque estamos reutilizando el mismo operador con un número de usos
diferentes, y el compilador decide cómo usar ese operador dependiendo sobre qué opera.
La sobrecarga de operadores sólo se puede utilizar con clases, no se pueden redefinir los operadorespara los tipos simples
predefinidos.
Los siguientes operadores no pueden ser sobrecargados:




El operador ternario ( ?: ) .
El operador de acceso a una clase o estructura ( . ) .
El operador scope ( :: ) .

Sobrecarga de operadores binarios
Veamos un ejemplo donde sobrecargamos el operador + para, a partir de dos cajas, crear otra de dimensiones igual a la
suma de las dimensiones de las cajasdadas:
1. #include
class Caja {
2.
double longitud;
3.
double anchura, altura;
4. public:
5.
void set(int l, int w, int h) {longitud = l; anchura = w; altura = h;}
6.
double volumen(void) {return longitud * anchura * altura;}
7.
Caja operator+(Caja a);
8. };
9. Caja operator+(Caja a)
10.{
11.Caja temp;
12.
temp.longitud = longitud + a.longitud;
13.
temp.anchura = anchura + a.anchura;14.
temp.altura = altura + a.altura;
15.
return temp;
16.}
17.main(){
18.Caja pequeña, mediana, grande;
19.Caja temp;
20.
pequeña.set(2, 4, 5);
21.
mediana.set(5, 6, 8);
22.
grande.set(8, 10, 12);
CICLO II

Guía. #4

23.
24.
25.
26.
27.
28.}

UES ­ FIA ­ EIE ­ PEL115

cout
cout
cout
temp
cout

3/10

<< "El volumen es " << pequeña.volumen() << "\n";
<< "El volumen es " << mediana.volumen() <<"\n";
<< "El volumen es " << grande.volumen() << "\n";
= pequeña + mediana;
<< "El nuevo volumen es " << temp.volumen() << "\n";

El resultado de la ejecución será:
El
El
El
El

volumen
volumen
volumen
volumen

es
es
es
es

40.
240.
960.
840.

Observamos que :




El operador se llama desde la clase que precede al operador, y el objeto que le sigue es enviado como parámetro. Esto
significa que elparámetro (a) es mediana.
El operador puede acceder a los miembros privados del parámetro que es enviado. En el ejemplo, accede a a.longitud,
a.anchura, a.altura.
El anterior es un operador binario sobrecargado, porque tiene dos operandos, mientras que un operador unario sólo
tiene un operando. Ejemplos de operadores unitarios son ++ y --.

Operadores amigos
1. #include
2. class Caja{
3.
double longitud;
4.
double anchura, altura;
5. public:
6.
void set(int l, int w, int h) {longitud = l; anchura = w; altura = h;}
7.
int volumen(void) {return longitud * anchura * altura;}
8.
friend Caja operator+(Caja a, Caja b);
// Add two Cajas
9.
friend Caja operator+(int a, Caja b);
// Add a constant to a Caja
10.
friend Caja operator*(int a, Caja b);
// Multiply a Caja by a constant
11.};
12.Caja operator+(Caja a, Caja b){
13.Caja temp;
14.
temp.longitud = a.longitud + b.longitud;
15.
temp.anchura = a.anchura + b.anchura;
16.
temp.altura = a.altura + b.altura;
17.
return temp;
18.}
19.Caja operator+(int a, Caja b)
// Add a constant to a Caja
20.{
21.Caja temp;
22.
temp.longitud = a + b.longitud;
23.
temp.anchura = a + b.anchura;
24.
temp.altura = a + b.altura;
25.
return temp;...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • fisica parte dos C
  • Clase Dos
  • Partidos multiples o dos partidos
  • C con clases
  • Clases en C#
  • CLASES EN C
  • Clases en c++
  • clase c

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS