|
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.
|
|