const int a = 10;Quando dichiari una variabile const con lo stesso nome in più file in C++, puoi dare a questa variabile un valore differente per ciascun file. La cosa non era permessa dall' ANSI C, dovevi dichiarare esplicitamente ogni costante come static.
Un'altra differenza col C è che il compilatore C++ calcola i valori costanti a tempo di compilazione. Questo significa che cose di questo tipo adesso sono permesse:
const int number = 10; // Dichiarazione di costante int array1[number]; // Normale codice C++ (non permesso dall' ANSI-C) int array2[number * 2]; // Non permesso dall' ANSI C.Ndt: le variabili costanti sono utili per due motivi: possono consentire una certa ottimizzazione ed evitano eventuali errori logici che si hanno quando normali variabili da considerare come costanti vengono erroneamente modificate. Infatti un'altra differenza fondamentale con il C è che mentre in C un tentativo di modificare un oggetto const produce tuttalpiù un warning, in C++ si ha sempre un errore di compilazione vero e proprio. In C le variabili costanti sono semplicemente delle variabili: a parte l'emissione del warning non hanno alcun trattamento speciale a compile-time. L'effetto del qualificatore const è solo quello di far emettere un warning in caso di modifica. In C++ invece esse sono valutate come costanti vere e proprie a compile time.