Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
✐<br />
✐<br />
✐<br />
“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 42 — #80<br />
✐<br />
Capítulo 2. Construir y usar objetos<br />
ejemplo, se puede declarar func1() con una apari<strong>en</strong>cia difer<strong>en</strong>te pero con el mismo<br />
significado:<br />
int func1(int l<strong>en</strong>gth, int width);<br />
Una puntualización<br />
Existe una difer<strong>en</strong>cia significativa <strong>en</strong>tre C y el <strong>C++</strong> para las funciones con lista de<br />
argum<strong>en</strong>tos vacía. En C, la declaración:<br />
int func2();<br />
significa «una funcion con cualquier número y tipo de argum<strong>en</strong>tos», lo cual anula<br />
la comprobación de tipos. En <strong>C++</strong>, sin embargo, significa «una función sin argum<strong>en</strong>tos».<br />
Definición de funciones<br />
La definición de funciones se parece a la declaración excepto <strong>en</strong> que ti<strong>en</strong><strong>en</strong> cuerpo.<br />
Un cuerpo es un conjunto de s<strong>en</strong>t<strong>en</strong>cias <strong>en</strong>cerradas <strong>en</strong>tre llaves. Las llaves indican<br />
el comi<strong>en</strong>zo y el final del código. Para dar a func1() una definición con un<br />
cuerpo vacío (un cuerpo que no conti<strong>en</strong>e código), escriba:<br />
int func1(int ancho, int largo) {}<br />
Note que <strong>en</strong> la definición de la función las llaves sustituy<strong>en</strong> el punto y coma.<br />
Como las llaves conti<strong>en</strong><strong>en</strong> una s<strong>en</strong>t<strong>en</strong>cia o grupo de s<strong>en</strong>t<strong>en</strong>cias, no es necesario un<br />
punto y coma. T<strong>en</strong>ga <strong>en</strong> cu<strong>en</strong>ta además que los argum<strong>en</strong>tos <strong>en</strong> la definición de la<br />
función deb<strong>en</strong> nombres si los quiere usar <strong>en</strong> el cuerpo de la función (como aquí no<br />
se usan, son opcionales).<br />
Sintaxis de declaración de variables<br />
El significado atribuido a la frase «declaración de variables» históricam<strong>en</strong>te ha<br />
sido confuso y contradictorio, y es importante que <strong>en</strong>ti<strong>en</strong>da el significado correcto<br />
para poder leer el código correctam<strong>en</strong>te. Una declaración de variable dice al compilador<br />
cómo es la variable. Dice al compilador, «Sé que no has visto este nombre<br />
antes, pero te prometo que existe <strong>en</strong> algún lugar, y que es una variable de tipo X».<br />
En una declaración de función, se da un tipo (el valor de retorno), el nombre<br />
de la función, la lista de argum<strong>en</strong>tos, y un punto y coma. Con esto el compilador<br />
ya ti<strong>en</strong>e sufici<strong>en</strong>te información para saber cómo será la función. Por infer<strong>en</strong>cia, una<br />
declaración de variable consistirá <strong>en</strong> un tipo seguido por un nombre. Por ejemplo:<br />
int a;<br />
podría declarar la variable a como un <strong>en</strong>tero usando la lógica usada anteriorm<strong>en</strong>te.<br />
Pero aquí está el conflicto: existe sufici<strong>en</strong>te información <strong>en</strong> el código anterior<br />
como para que el compilador pueda crear espacio para un <strong>en</strong>tero llamado a y es<br />
exactam<strong>en</strong>te lo que ocurre. Para resolver el dilema, fue necesaria una palabra reservada<br />
<strong>en</strong> C y <strong>C++</strong> para decir «Esto es sólo una declaración; esta variable estará<br />
definida <strong>en</strong> algún otro lado». La palabra reservada es extern que puede significar<br />
42<br />
✐<br />
✐<br />
✐<br />
✐