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 172 — #210<br />

✐<br />

Capítulo 5. Ocultar la implem<strong>en</strong>tación<br />

programador cli<strong>en</strong>te sólo a <strong>en</strong>lazar de nuevo sus programas.<br />

5.2. Control de acceso <strong>en</strong> <strong>C++</strong><br />

<strong>C++</strong> introduce tres nuevas palabras clave para establecer las fronteras de una<br />

estructura: public, private y protected. Su uso y significado es bastante claro.<br />

Los especificadores de acceso se usan solo <strong>en</strong> la declaración de las estructuras, y<br />

cambian las fronteras para todas las declaraciones que los sigu<strong>en</strong>. Cuando use un<br />

especificador de acceso, debe ir seguido de «:»<br />

public significa que todas las declaraciones de miembros que sigu<strong>en</strong> estarán<br />

accesibles para cualquiera. Los miembros publicson como miembros de una estructura.<br />

Por ejemplo, las sigui<strong>en</strong>tes declaraciones de estructuras son idénticas:<br />

//: C05:Public.cpp<br />

// Public is just like C’s struct<br />

struct A {<br />

int i;<br />

char j;<br />

float f;<br />

void func();<br />

};<br />

void A::func() {}<br />

struct B {<br />

public:<br />

int i;<br />

char j;<br />

float f;<br />

void func();<br />

};<br />

void B::func() {}<br />

int main() {<br />

A a; B b;<br />

a.i = b.i = 1;<br />

a.j = b.j = ’c’;<br />

a.f = b.f = 3.14159;<br />

a.func();<br />

b.func();<br />

} ///:~<br />

La palabra clave private, por otro lado, significa que nadie podrá acceder a ese<br />

miembro excepto usted, el creador del tipo, d<strong>en</strong>tro de los métodos de ese tipo. private<br />

es una pared <strong>en</strong>tre usted y el programador cli<strong>en</strong>te; si algui<strong>en</strong> int<strong>en</strong>ta acceder a<br />

un miembro private, obt<strong>en</strong>drá un error <strong>en</strong> tiempo de compilación. En struct B<br />

<strong>en</strong> el ejemplo anterior, podría querer hacer partes de la repres<strong>en</strong>tación (es decir, los<br />

atributos) ocultos, accesibles solo a usted:<br />

//: C05:Private.cpp<br />

// Setting the boundary<br />

172<br />

✐<br />

✐<br />

✐<br />

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

Saved successfully!

Ooh no, something went wrong!