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.

<strong>de</strong> struct y union. Por tanto se pue<strong>de</strong> <strong>de</strong>clarar una variable <strong>de</strong> enumeración, estructura o union sin<br />

utilizar las palabras enum, strcut o union.<br />

C <strong>de</strong>fine el tipo <strong>de</strong> enum <strong>de</strong> tipo int. En <strong>C++</strong>, sin embargo, cada tipo enumerado es su propio tipo<br />

in<strong>de</strong>pendiente. Esto significa que <strong>C++</strong> no permite que un valor int se convierta automáticamente a un<br />

valor enum. Sin embargo, un valor enumerado se pue<strong>de</strong> utilizar en lugar <strong>de</strong> un int.<br />

Ejemplo:<br />

enum lugar{primero,segundo,tercero};<br />

lugar pepe=primero; //correcto<br />

int vencedor=pepe; //correcto<br />

lugar juan=1; //incorrecto<br />

La última sentencia <strong>de</strong> asignación es aceptable en C pero no en <strong>C++</strong>, ya que 1 no es un valor <strong>de</strong>finido<br />

en lugar.<br />

- Tipos referencia. Las referencias son como alias. Son alternativas al nombre <strong>de</strong> un objeto. Se <strong>de</strong>fine<br />

un tipo referencia haciéndole prece<strong>de</strong>r por el operador <strong>de</strong> dirección &. Un objeto referencia, igual que<br />

una constante <strong>de</strong>be ser inicializado.<br />

int a=50;<br />

int &refa=a; //correcto<br />

int &ref2a; //incorrecto: no inicializado<br />

Todas las operaciones efectuadas sobre la referencia se realizan sobre el propio objeto:<br />

refa+=5; equivale a sumar 5 a a, que vale ahora 55<br />

int *p=&refa; inicializa p con la dirección <strong>de</strong> a<br />

Operadores especiales <strong>de</strong> <strong>C++</strong><br />

:: Resolución <strong>de</strong> ámbito (o alcance)<br />

.* Indirección (eliminación <strong>de</strong> referencia directa) un puntero a un miembro <strong>de</strong> una clase<br />

->* Indirección (eliminación <strong>de</strong> referencia directa) un puntero a un miembro <strong>de</strong> una clase<br />

new Asigna (inicializa) almacenamiento dinámico<br />

<strong>de</strong>lete Libera almacenamiento asignado por new<br />

Declaraciones y <strong>de</strong>finiciones<br />

Los términos <strong>de</strong>claración y <strong>de</strong>finición tienen un significado distinto aunque con frecuencia se<br />

intercambian.<br />

Las <strong>de</strong>claraciones se utilizan para introducir un nombre al compilador, pero no se asigna memoria. Las<br />

<strong>de</strong>finiciones asignan memoria.<br />

En <strong>C++</strong> cuando se <strong>de</strong>clara una estructura se proporciona su nombre al compilador pero no se asigna<br />

memoria. Cuando se crea una instancia <strong>de</strong> la estructura es cuando se asigna memoria.<br />

En C todas las <strong>de</strong>claraciones <strong>de</strong>ntro <strong>de</strong> un programa o función <strong>de</strong>ben hacerse al principio <strong>de</strong>l programa<br />

o función; en otras palabras las <strong>de</strong>claraciones <strong>de</strong>ntro <strong>de</strong> un ámbito dado <strong>de</strong>ben ocurrir al principio <strong>de</strong><br />

ese ámbito.<br />

Todas las <strong>de</strong>claraciones globales <strong>de</strong>ben aparecer antes <strong>de</strong> cualquier función y cualquier <strong>de</strong>claración<br />

local <strong>de</strong>be hacerse antes <strong>de</strong> cualquier sentencia ejecutable.

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

Saved successfully!

Ooh no, something went wrong!