 Introducción
Introducción  1 
Toma de contacto
1 
Toma de contacto  2 
Variables I
2 
Variables I  3 
Funciones I: Declaración y definición
3 
Funciones I: Declaración y definición  4 
Operadores I
4 
Operadores I  5 
Sentencias
5 
Sentencias  6 
Declaración de variables
6 
Declaración de variables  7 
Normas para la notación
7 
Normas para la notación  8 
Cadenas de caracteres
8 
Cadenas de caracteres  9 
Conversión de tipos
9 
Conversión de tipos  10 Variables II: Arrays
10 Variables II: Arrays 11 Variables III: Estructuras
11 Variables III: Estructuras 12 
Variables IV: Punteros 1
12 
Variables IV: Punteros 1  13 
Operadores II: Más operadores
13 
Operadores II: Más operadores  14 
Operadores III: Precedencia
14 
Operadores III: Precedencia  15 
Funciones II: Parámetros por valor y referencia
15 
Funciones II: Parámetros por valor y referencia  16 
Variables V: Uniones
16 
Variables V: Uniones  17 
Variables VI: Punteros 2
17 
Variables VI: Punteros 2  18 
Operadores IV: De bits y condicional
18 
Operadores IV: De bits y condicional  19 
Definición de tipos
19 
Definición de tipos  20 
Funciones III
20 
Funciones III  21 
Funciones IV: Sobrecarga
21 
Funciones IV: Sobrecarga  22 Operadores V: Sobrecarga
22 Operadores V: Sobrecarga  23 El 
preprocesador
23 El 
preprocesador  24 
Funciones V: Recursividad
24 
Funciones V: Recursividad  25 
Variables VII: Modificadores
25 
Variables VII: Modificadores  26 
Espacios con nombre
26 
Espacios con nombre  27 Clases 
I: Definiciones
27 Clases 
I: Definiciones  28 
Declaración de clases
28 
Declaración de clases  29 
Constructores
29 
Constructores  30 
Destructores
30 
Destructores  31 El 
puntero this
31 El 
puntero this  32 
Sistema de protección
32 
Sistema de protección  33 
Modificadores para miembros
33 
Modificadores para miembros  34 Más 
sobre funciones
34 Más 
sobre funciones  35 
Operadores sobrecargados
35 
Operadores sobrecargados  36 
Herencia
36 
Herencia  37 
Funciones virtuales
37 
Funciones virtuales  38 
Derivación múltiple
38 
Derivación múltiple  39 
Trabajar con ficheros
39 
Trabajar con ficheros  40 
Plantillas
40 
Plantillas  41 
Punteros a miembros
41 
Punteros a miembros  42 
Castings
42 
Castings  43 
Excepciones
43 
Excepciones  Ejemplos 
capítulos 1 a 6
Ejemplos 
capítulos 1 a 6  Ejemplos 
capítulos 8 y 9
Ejemplos 
capítulos 8 y 9  A 
Palabras reservadas C/C++
A 
Palabras reservadas C/C++  B 
Trigrafos y símbolos alternativos
B 
Trigrafos y símbolos alternativos  C 
Librerías estándar
C 
Librerías estándar  D Streams
D Streams 
Análogamente a las funciones sobrecargadas, los operadores también pueden sobrecargarse.
En realidad la mayoría de los operadores en C++ 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 indirección.
C++ permite al programador sobrecargar a su vez los operadores para sus propios usos.
Sintaxis:
Prototipo:
<tipo> operator <operador> (<argumentos>);
Definición:
<tipo> operator <operador> (<argumentos>) 
{
   <sentencias>;
} 
También existen algunas limitaciones para la sobrecarga de operadores:
Ejemplo:
#include <iostream>
using namespace std;
 
struct complejo { 
   float a,b; 
};
 
/* Prototipo del operador + para complejos */
complejo operator +(complejo a, complejo b);
 
int main() { 
   complejo x = {10,32}; 
   complejo y = {21,12};
 
   complejo z; 
   /* Uso del operador sobrecargado + con complejos */
   z = x + y; 
   cout << z.a << "," << z.b << endl; 
   
   cin.get();
   return 0; 
}
 
/* Definición del operador + para complejos */
complejo operator +(complejo a, complejo b)  { 
   complejo temp = {a.a+b.a, a.b+b.b}; 
   return temp; 
}
Al igual que con las funciones sobrecargadas, la versión del operador que se usará se decide después del análisis de los argumentos.
También es posible usar los operadores en su notación funcional:
z = operator+(x,y);
Pero donde veremos mejor toda la potencia de los operadores sobrecargados será cuando estudiemos las clases.
operator.
© Septiembre de 2000 Salvador Pozo, salvador@conclase.net