13.01.2015 Views

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

SHOW MORE
SHOW LESS

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 65 — #103<br />

✐<br />

3.1. Creación de funciones<br />

punteros, como se verá mas adelante <strong>en</strong> este capítulo).<br />

La otra opción para las listas de argum<strong>en</strong>tos se produce cuando no se sabe cuantos<br />

argum<strong>en</strong>tos o qué tipos t<strong>en</strong>drán los argum<strong>en</strong>tos; esto se conoce como lista de<br />

argum<strong>en</strong>tos variable. Esta «lista incierta de argum<strong>en</strong>tos» se repres<strong>en</strong>tada con puntos<br />

susp<strong>en</strong>sivos (...). Definir una función con una lista de argum<strong>en</strong>tos variable es significativam<strong>en</strong>te<br />

más complicado que definir una función normal. Se puede utilizar una<br />

lista de argum<strong>en</strong>tos variable para una función que ti<strong>en</strong>e un grupo de argum<strong>en</strong>tos<br />

fijos si (por alguna razón) se quiere deshabilitar la comprobación del prototipo de<br />

función. Por eso, se debe restringir el uso de listas de argum<strong>en</strong>tos variables <strong>en</strong> C y<br />

evitarlas <strong>en</strong> <strong>C++</strong> (<strong>en</strong> el cual, como apr<strong>en</strong>derá, hay alternativas mucho mejores). El<br />

manejo de listas de argum<strong>en</strong>tos variables se describe <strong>en</strong> la sección de librerías de la<br />

docum<strong>en</strong>tación de su <strong>en</strong>torno C particular.<br />

3.1.1. Valores de retorno de las funciones<br />

Un prototipo de función <strong>C++</strong> debe especificar el tipo de valor devuelto de la función<br />

(<strong>en</strong> C, si no se especifica será por defecto un int). La especificación del tipo de<br />

retorno precede al nombre de la función. Para especificar que no se devolverá valor<br />

alguno, se utiliza la palabra reservada void. Esto provocará un error si se int<strong>en</strong>ta devolver<br />

un valor desde la función. A continuación hay algunos prototipos completos<br />

de funciones:<br />

int f1(void); // Devuelve un <strong>en</strong>tero, no ti<strong>en</strong>e argum<strong>en</strong>tos<br />

int f2(); // igual que f1() <strong>en</strong> <strong>C++</strong> pero no <strong>en</strong> C Stantard<br />

float f3(float, int, char, double); // Devuelve un float<br />

void f4(void); // No toma argum<strong>en</strong>tos, no devuelve nada<br />

Para devolver un valor desde una función, se utiliza la s<strong>en</strong>t<strong>en</strong>cia return. Esta<br />

s<strong>en</strong>t<strong>en</strong>cia termina la función y salta hasta la s<strong>en</strong>t<strong>en</strong>cia que se halla justo después<br />

de la llamada a la función. Si return ti<strong>en</strong>e un argum<strong>en</strong>to, se convierte <strong>en</strong> el valor<br />

de retorno de la función. Si una función indica que retornara un tipo <strong>en</strong> particular,<br />

<strong>en</strong>tonces cada s<strong>en</strong>t<strong>en</strong>cia return debe retornar un valor de ese tipo. Puede haber<br />

más de una s<strong>en</strong>t<strong>en</strong>cia return <strong>en</strong> una definición de función:<br />

//: C03:Return.cpp<br />

// Use of "return"<br />

#include <br />

using namespace std;<br />

char cfunc(int i) {<br />

if(i == 0)<br />

return ’a’;<br />

if(i == 1)<br />

return ’g’;<br />

if(i == 5)<br />

return ’z’;<br />

return ’c’;<br />

}<br />

int main() {<br />

cout > val;<br />

cout

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

Saved successfully!

Ooh no, something went wrong!