A
propósito de las funciones anteriores se pueden hacer los
comentarios siguientes:
·
En C++ es habitual distinguir entre la declaración
de una clase (fichero complejo.h) y su implementación
(fichero complejo.cpp). De ordinario sólo la
declaración es pública, quedando oculta a los usuarios
de la clase la forma en la que se han programado las distintas funciones
y operadores miembro.
·
Las funciones y operadores miembro de una clase
se definen anteponiendo a su nombre el nombre de la clase y el scope
resolution operator (::).
·
Las funciones y operadores miembro acceden directamente a las variables
miembro del objeto implícito, y por medio del nombre y del
operador punto (.) a las del objeto pasado explícitamente.
Por ejemplo, supóngase la operación (x+y;),
donde tanto x como y son complejos. Para hacer esta operación
se utilizará el operador + sobrecargado, definido
en las líneas 75-81. En este caso x es el argumento
implícito, mientras que el objeto y se pasa explícitamete
por ventana. Dentro de la función que define el operador
+, las partes real e imaginaria de x se acceden como real
e imag, mientras que las de y se acceden como
a.real y a.imag, pues el argumento actual y se recibe como
argumento formal a.
·
Las funciones y operadores friend no pertenecen a
la clase y por tanto no llevan el nombre de la clase y el scope
resolution operator (::).. Estas funciones no tienen argumento
implícito y todos los argumentos deben pasar por ventana.
·
En la sobrecarga del operador miembro de asignación (=) (líneas
108-113) aparece la sentencia (return (*this);). ¿Qué
representa esto? La idea es que las funciones y operadores miembro
acceden directamente a las variables miembro del objeto que es su
argumento implícito, pero sólo con esto carecerían
de una visión de conjunto de dicho argumento. Por ejemplo,
en la sentencia (x=y;) el operador = recibe
y como argumento formal a, y aunque puede
acceder a las variables real e imag de x no
puede acceder a x como objeto. Esto se soluciona en
C++ con el puntero this, que es siempre un puntero
al argumento implícito de cualquier función
u operador miembro de una clase. De acuerdo con esto, *this
será el argumento implícito x y ese es su significado.
|