BUSCAR
INDICE
INDICE DEL TEMA
OBJETIVOS
TEORIA
PALABRAS RESERVADAS
GLOSARIO
EJERCICIOS
RESUELTOS
AUTOEVALUACION
PROPUESTOS
ERRORES
ESTADISTICAS
INICIO
FAQS
LINKS
RECOMIENDANOS
QUIENES SOMOS
MAPA DEL WEB
COLABORAR
Tema 15 Sobrecarga de funciones y de operadores
Teoría: Ejemplo de utilización de la clase cadena

Una vez vistas todas las definiciones contenidas en el fichero cadena.cpp, queda por ver un programa principal que de alguna manera utilice las capacidades que se han explicado: Un programa principal posible, contenido en un fichero llamado pruebacad.cpp, se muestra a continuación:

Es muy interesante ver cuál es la salida que produce el anterior programa principal, que se muestra un poco más adelante. Dicha salida consta de los mensajes del propio programa principal y de los que producen los constructores, el destructor y el operador (=) cada vez que son llamados (la mayoría de los mensajes proviene de ellos). Se puede observar que hay más llamadas a los constructores y al destructor de las que cabría pensar. Para identificar estas llamadas se ha incluido en negrita el código del programa principal, que aparece justo antes de que se llame, es decir, justo antes de que se muestren los mensajes que esa sentencia genera. Se puede concluir que la facilidad que C++ da a los programadores tiene un precio en términos de eficiencia en los cálculos. Esta eficiencia puede mejorarse utilizando siempre que sea posible referencias a objetos, evitando así llamadas a los constructores y al destructor.

Nótese que cada llamada al operador (+) implica la creación de un objeto con el constructor por defecto para crear el objeto resultante de la concatenación, y luego una llamada al constructor de copia y dos llamadas al destructor para devolver el objeto resultante como valor de retorno. En efecto, para devolver un objeto como valor de retorno, C++ crea un objeto invisible con el constructor de copia, destruye el objeto creado anteriormente con el constructor por defecto y luego destruye el objeto invisible creado con el constructor de copia.