17.05.2013 Views

Manual de lenguaje C++

Manual de lenguaje C++

Manual de lenguaje C++

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

complejo::complejo (float a,float b)<br />

{<br />

real=a;<br />

imag=b;<br />

}<br />

Este constructor se pue<strong>de</strong> escribir:<br />

complejo::complejo (float a,float b)<br />

{<br />

this->real=a;<br />

this->imag=b;<br />

}<br />

this->nombre_miembro : apunta a un miembro<br />

*this : es el objeto total. Es un valor constante<br />

this : es la dirección <strong>de</strong>l objeto apuntado<br />

Funciones miembro estáticas<br />

Las funciones miembro static sólo pue<strong>de</strong>n acce<strong>de</strong>r a otras funciones y datos <strong>de</strong>clarados en una clase,<br />

pero no pue<strong>de</strong>n manipular funciones ni datos no estáticos. La razón <strong>de</strong> esta característica es que una<br />

función miembro static no tiene asignado un puntero this y por ello no pue<strong>de</strong> acce<strong>de</strong>r a miembros<br />

dato <strong>de</strong> la clase a menos que se pase explícitamente este puntero this.<br />

Constructores<br />

Un constructor es una función especial que sirve para construir o inicializar objetos. En <strong>C++</strong> la<br />

inicialización <strong>de</strong> objetos no se pue<strong>de</strong> realizar en el momento en que son <strong>de</strong>clarados; sin embargo,<br />

tiene una característica muy importante y es disponer <strong>de</strong> una función llamada constructor que permite<br />

inicializar objetos en el momento en que se crean.<br />

Un constructor es una función que sirve para construir un nuevo objeto y asignar valores a sus<br />

miembros dato. Se caracteriza por:<br />

- Tener el mismo nombre <strong>de</strong> la clase que inicializa<br />

- Pue<strong>de</strong> <strong>de</strong>finirse inline o fuera <strong>de</strong> la <strong>de</strong>claración <strong>de</strong> la clase<br />

- No <strong>de</strong>vuelve valores<br />

- Pue<strong>de</strong> admitir parámetros como cualquier otra función<br />

- Pue<strong>de</strong> existir más <strong>de</strong> un constructor, e incluso no existir<br />

Si no se <strong>de</strong>fine ningún constructor <strong>de</strong> una clase, el compilador generará un constructor por <strong>de</strong>fecto. El<br />

constructor por <strong>de</strong>fecto no tiene argumentos y simplemente sitúa ceros en cada byte <strong>de</strong> las variables<br />

instancia <strong>de</strong> un objeto. Si se <strong>de</strong>finen constructores para una clase, el constructor por <strong>de</strong>fecto no se<br />

genera.<br />

Un constructor <strong>de</strong>l objeto se llama cuando se crea el objeto implícitamente: nunca se llama<br />

explícitamente a las funciones constructoras. Esto significa que se llama cuando se ejecuta la<br />

<strong>de</strong>claración <strong>de</strong>l objeto. También, para objetos locales, el constructor se llama cada vez que la<br />

<strong>de</strong>claración <strong>de</strong>l objeto se encuentra. En objetos globales, el constructor se llama cuando se arranca el<br />

programa.<br />

El constructor por <strong>de</strong>fecto es un constructor que no acepta argumentos. Se llama cuando se <strong>de</strong>fine una<br />

instancia pero no se especifica un valor inicial.<br />

Se pue<strong>de</strong>n <strong>de</strong>clarar en una clase constructores múltiples, mientras tomen parte diferentes tipos o<br />

número <strong>de</strong> argumentos. El compilador es entonces capaz <strong>de</strong> <strong>de</strong>terminar automáticamente a qué<br />

constructor llamar en cada caso, examinando los argumentos.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!