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

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

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

✐<br />

✐<br />

✐<br />

“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 84 — #122<br />

✐<br />

Capítulo 3. C <strong>en</strong> <strong>C++</strong><br />

3.4.6. Introducción a las refer<strong>en</strong>cias de <strong>C++</strong><br />

Los punteros funcionan más o m<strong>en</strong>os igual <strong>en</strong> C y <strong>en</strong> <strong>C++</strong>, pero <strong>C++</strong> añade un<br />

modo adicional de pasar una dirección a una función. Se trata del paso-por-refer<strong>en</strong>cia<br />

y existe <strong>en</strong> otros muchos l<strong>en</strong>guajes, de modo que no es una inv<strong>en</strong>ción de <strong>C++</strong>.<br />

La primera impresión que dan las refer<strong>en</strong>cias es que no son necesarias, que se<br />

pued<strong>en</strong> escribir cualquier programa sin refer<strong>en</strong>cias. En g<strong>en</strong>eral, eso es verdad, con la<br />

excepción de unos pocos casos importantes que se tratarán más adelante <strong>en</strong> el libro,<br />

pero la idea básica es la misma que la demostración anterior con el puntero: se puede<br />

pasar la dirección de un argum<strong>en</strong>to utilizando una refer<strong>en</strong>cia. La difer<strong>en</strong>cia <strong>en</strong>tre<br />

refer<strong>en</strong>cias y punteros es que invocar a una función que recibe refer<strong>en</strong>cias es mas<br />

limpio, sintácticam<strong>en</strong>te, que llamar a una función que recibe punteros (y es exactam<strong>en</strong>te<br />

esa difer<strong>en</strong>cia sintáctica la que hace a las refer<strong>en</strong>cias es<strong>en</strong>ciales <strong>en</strong> ciertas<br />

situaciones). Si PassAddress.cpp se modifica para utilizar refer<strong>en</strong>cias, se puede<br />

ver la difer<strong>en</strong>cia <strong>en</strong> la llamada a la función <strong>en</strong> main():<br />

//: C03:PassRefer<strong>en</strong>ce.cpp<br />

#include <br />

using namespace std;<br />

void f(int& r) {<br />

cout

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

Saved successfully!

Ooh no, something went wrong!