Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
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 225 — #263<br />
✐<br />
8.1. Sustitución de valores<br />
de almac<strong>en</strong>ami<strong>en</strong>to <strong>en</strong> difer<strong>en</strong>tes módulos. Entonces, el <strong>en</strong>lazador vería la misma<br />
definición <strong>en</strong> múltiples archivos objeto, lo que causaría un error <strong>en</strong> el <strong>en</strong>lace. Como<br />
las constantes utilizan <strong>en</strong>lace interno, el <strong>en</strong>lazador no int<strong>en</strong>ta <strong>en</strong>lazar esas definiciones<br />
a través de los módulos, y así no hay colisiones. Con los tipos básicos, que son<br />
los se v<strong>en</strong> involucrados <strong>en</strong> la mayoría de los casos, el compilador siempre realiza<br />
propagación de constantes.<br />
8.1.2. constantes seguras<br />
El uso de las constantes no está limitado a la sustitución de los #define por<br />
expresiones constantes. Si inicializa una variable con un valor que se produce <strong>en</strong><br />
tiempo de ejecución y sabe que no cambiará durante la vida de la variable, es una<br />
bu<strong>en</strong>a práctica de programación hacerla constante para que de ese modo el compilador<br />
produzca un m<strong>en</strong>saje de error si accid<strong>en</strong>talm<strong>en</strong>te algui<strong>en</strong> int<strong>en</strong>ta modificar<br />
dicha variable. Aquí hay un ejemplo:<br />
//: C08:Safecons.cpp<br />
// Using const for safety<br />
#include <br />
using namespace std;<br />
const int i = 100; // Typical constant<br />
const int j = i + 10; // Value from const expr<br />
long address = (long)&j; // Forces storage<br />
char buf[j + 10]; // Still a const expression<br />
int main() {<br />
cout