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 107 — #145<br />

✐<br />

3.7. Los operadores y su uso<br />

} ///:~<br />

Si toma la dirección de un objeto const, produce un puntero a const, éste no<br />

se puede asignar a un puntero que no sea const sin un molde. El molde al estilo<br />

antiguo lo puede hacer, pero el const_cast es el más apropiado <strong>en</strong> este caso. Lo<br />

mismo ocurre con volatile.<br />

reinterpret_cast<br />

Este es el m<strong>en</strong>os seguro de los mecanismos de molde, y el más susceptible de<br />

crear fallos. Un reinterpret_cast supone que un objeto es un patrón de bits que<br />

se puede tratar (para algún oscuro propósito) como si fuese de un tipo totalm<strong>en</strong>te<br />

distinto. Ese es el jugueteo de bits a bajo nivel por el cual C es famoso. Prácticam<strong>en</strong>te<br />

siempre necesitará hacer reinterpret_cast para volver al tipo original (o de lo<br />

contrario tratar a la variable como su tipo original) antes de hacer nada más con ella.<br />

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

#include <br />

using namespace std;<br />

const int sz = 100;<br />

struct X { int a[sz]; };<br />

void print(X* x) {<br />

for(int i = 0; i < sz; i++)<br />

cout a[i]

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

Saved successfully!

Ooh no, something went wrong!