17.05.2013 Views

Manual de lenguaje C++

Manual de lenguaje C++

Manual de lenguaje C++

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

memoria necesaria para alojar el objeto y <strong>de</strong>vuelve su dirección, en forma <strong>de</strong> puntero, al objeto en<br />

cuestión.<br />

Los constructores normalmente implican la aplicación <strong>de</strong> new.<br />

p =new int(9) //p es un puntero a int inicializado a 9<br />

ca<strong>de</strong>na cad1("hola");<br />

ca<strong>de</strong>na *cad2=new ca<strong>de</strong>na;<br />

Un objeto creado con new no tiene ámbito, es <strong>de</strong>cir, no se <strong>de</strong>struye automáticamente al salir fuera <strong>de</strong>l<br />

ámbito, sino que existe hasta que se <strong>de</strong>struye explícitamente mediante el operador <strong>de</strong>lete.<br />

class ca<strong>de</strong>na<br />

{<br />

char *datos;<br />

public:ca<strong>de</strong>na(int);<br />

~ca<strong>de</strong>na();<br />

};<br />

ca<strong>de</strong>na::ca<strong>de</strong>na(int lon)<br />

{<br />

datos=new char[lon];<br />

}<br />

ca<strong>de</strong>na::~ca<strong>de</strong>na()<br />

{<br />

<strong>de</strong>lete datos;<br />

}<br />

Funciones amigas<br />

Una función amiga es una función no miembro <strong>de</strong> una clase que pue<strong>de</strong> tener acceso a las partes<br />

privadas <strong>de</strong> una clase; se <strong>de</strong>be <strong>de</strong>clarar como amiga <strong>de</strong> la clase mediante la palabra reservada friend.<br />

Las funciones amigas se <strong>de</strong>claran situando su prototipo <strong>de</strong> función en la clase <strong>de</strong> la que son amiga<br />

precediéndola con la palabra reservada friend. Por ejemplo:<br />

class cosa<br />

{<br />

int datos;<br />

public:<br />

friend void cargar (cosa& t, int x);<br />

};<br />

void cargar(cosa& t, int x)<br />

{<br />

t.datos=x;<br />

}<br />

Como la función cargar se <strong>de</strong>clara amiga <strong>de</strong> la clase cosa pue<strong>de</strong> acce<strong>de</strong>r al miembro privado datos.<br />

Las razones fundamentales para utilizar funciones amigas es que algunas funciones necesitan acceso<br />

privilegiado a más <strong>de</strong> una clase. Una segunda razón es que las funciones amigas pasan todos sus<br />

argumentos a través <strong>de</strong> la lista <strong>de</strong> argumentos y cada valor <strong>de</strong> argumento se somete a la conversión<br />

<strong>de</strong> asignación.<br />

Clases amigas<br />

No sólo pue<strong>de</strong> ser una función, amiga <strong>de</strong> una clase, también una clase completa pue<strong>de</strong> ser amiga <strong>de</strong><br />

otra clase. En este caso todas las funciones <strong>de</strong> la clase amiga pue<strong>de</strong>n acce<strong>de</strong>r a las partes privadas <strong>de</strong><br />

la otra clase.

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

Saved successfully!

Ooh no, something went wrong!