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

Sobrecarga de operadores

Taty120900Síntesis27 de Enero de 2020

2.071 Palabras (9 Páginas)228 Visitas

Página 1 de 9

ESCUELA SUPERIOR[pic 1][pic 2]

POLITÉCNICA

                DE CHIMBORAZO

FACULTAD DE INFORMÁTICA

Y ELECTRÓNICA

SOFTWARE

Nombre: Tatiana Carrillo

Código: 6768

Materia: Paradigma Orientado a Objetos

Tema: Sobrecarga de operadores

Curso: Segundo A

Tabla de contenido

SOBRECARGA DE OPERADORES        3

Objetivos        3

Objetivo General        3

Objetivos Específicos        3

Introducción        4

Desarrollo        5

Lista de operadores válidos en C++        5

Sintaxis        5

Algunas limitaciones para la sobrecarga de operadores        5

Operadores unitarios        6

Operadores binarios        9

Conclusiones        12

Recomendaciones        12

Bibliografía        12


SOBRECARGA DE OPERADORES

Objetivos

Objetivo General

  • Realizar una investigación bibliográfica referente a sobrecarga de operadores

 

Objetivos Específicos

  • Establecer la definición de sobrecarga de operadores
  • Realizar una búsqueda de temas particulares de mencionado tema
  • Elaborar ejemplos prácticos donde se evidencie los temas de consulta


Introducción

Un operador sobrecargado es aquel al que se le ha dado más de una función, por ejemplo, el operador <<, este operador ha sido sobrecargado por el mismo lenguaje C++, así se le puede emplear como operador de desplazamiento de bits (a=b<<3;) o como operador de flujo de datos (cout << "mensaje").

La sobrecarga de operadores es uno de los mecanismos que nos permite ampliar las capacidades de los lenguajes de programación orientados a objetos. En C++, la declaración y definición de una sobrecarga de operador es muy similar a la declaración y definición de una función cualquiera. El ejemplo más sencillo de una sobrecarga de operadores nos lo da el lenguaje mismo, es decir, en una operación aritmética (por ejemplo, una suma) el compilador determina el tipo de operación requerida de acuerdo con el tipo de datos involucrados.


Desarrollo

En realidad, la mayoría de los operadores en C++ ya están sobrecargados. Por ejemplo, el operador + realiza distintas acciones cuando los operandos son enteros, o en coma flotante. En otros casos esto es más evidente, por ejemplo, el operador * se puede usar como operador de multiplicación o como operador de dirección.

C++ permite al programador sobrecargar a su vez los operadores para sus propios usos o para sus propios tipos.

Lista de operadores válidos en C++

+

-

*

/

%

^

&

|

~

!

,

=

<

>

<=

>=

++

--

<<

>>

==

!=

&&

||

+=

-=

*=

/=

%=

^=

&=

|=

<<=

>>=

[ ]

( )

->

->*

new

delete

Sintaxis

Tipo Nombre de la Clase :: operator (lista de argumentos) {

        ;

}

Algunas limitaciones para la sobrecarga de operadores

  • Se pueden sobrecargar todos los operadores excepto “.”, “.*”, “::”, “?:”, sizeof y typeid.
  • Los operadores "=", "[]", "->", "()", "new" y "delete", sólo pueden ser sobrecargados cuando se definen como miembros de una clase.
  • Los argumentos deben ser tipos enumerados o estructurados: struct, union o class.
  • El número de argumentos viene predeterminado dependiendo del operador.
  • Podemos sobrecargar tanto operadores unarios como binarios:
  • tipo_ret operator op_unario (tipo1 arg1);
  • tipo_ret operator op_binario (tipo1 arg1, tipo2 arg2);

Operadores unitarios

También es posible sobrecargar los operadores de pre-incremento, post-incremento, pre-decremento y post-decremento.

De hecho, es posible sobrecargar otros operadores de forma unitaria, como el +, -, * o & de forma prefija.

En estos casos, el operador sólo afecta a un operando. 

Ejemplo 1

En este ejemplo se evidencia el operador unario sobrecargado (++)

// Autor: Tatiana Carrillo

#include

#include

using namespace std;

class cReloj{ // Clse cReloj

    int hora; // Atributo Hora

    int minuto; // Atributo Minuto

    int segundo; // Atributo Segundo

public:

    cReloj(){ setHora(0); setMinuto(0); setSegundo(0); } // Método constructor

    ~cReloj(){ setHora(0); setMinuto(0); setSegundo(0); } // Método destructor

    void setHora(int x) { hora = x; } // Actualiza el valor de la hora

    void setMinuto(int x) { minuto = x; } // Actualiza el valor de los minutos

    void setSegundo(int x) { segundo = x; } // Actualiza el valor de los segundos

    int getHora() { return hora; } // Devuelve el valor de la hora

    int getMinuto() { return minuto; } // Devuelve el valor de los minutos

    int getSegundo() { return segundo; } // Devuelve el valor de los segundos

    cReloj(int h, int m, int s){ // Método que actualiza el reloj

        setHora(h);

        setMinuto(m);

        setSegundo(s);

    } // De cReloj

    void operator ++(){ // Implementación de SOBRECARGA DE OPERADORES

        setSegundo(getSegundo() + 1);

        if (getSegundo() > 59){ // Si los segundos superan 59, realiza el proceso correcto

            setSegundo(getSegundo() - 60);

            setMinuto(getMinuto() + 1);

        } // Fin del if

        if (getMinuto() > 59){ // Si los minutos superan 59, realiza el proceso correcto

            setMinuto(getMinuto() - 60);

            setHora(getHora() + 1);

        } // Fin del if

        if (getHora() > 23)  // Si la hora supera 23, realiza el proceso correcto

            setHora(getHora() - 24);

    } // De sobrecarga de operadores

}; // De clase cReloj

int main (){ // Programa principal

    system("Color B");

...

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