Valori costanti
const la parola chiave indica che un valore della variabile è costante e indica al compilatore di impedire il programmatore da modificare.
// constant_values1.cpp
int main() {
const int i = 5;
i = 10; // C3892
i++; // C2105
}
In C++, è possibile utilizzare const parola chiave anziché #define direttiva per il preprocessore per definire i valori costanti.stima definito con const essere conforme al controllo di tipo e può essere utilizzato al posto delle espressioni costanti.In C++, è possibile specificare la dimensione di una matrice con un oggetto const variabile come segue:
// constant_values2.cpp
// compile with: /c
const int maxarray = 255;
char store_char[maxarray]; // allowed in C++; not allowed in C
In C#, l'impostazione predefinita di valori costanti al collegamento esterno, in modo che possono essere visualizzati solo nei file di origine.In C++, impostazione predefinita di valori costanti al collegamento interno, che ne consente di visualizzare in file di intestazione.
const la parola chiave può essere utilizzata nelle dichiarazioni del puntatore.
// constant_values3.cpp
int main() {
char *mybuf = 0, *yourbuf;
char *const aptr = mybuf;
*aptr = 'a'; // OK
aptr = yourbuf; // C3892
}
Un puntatore a una variabile dichiarata come const è possibile assegnare solo a un puntatore che viene dichiarata come const.
// constant_values4.cpp
#include <stdio.h>
int main() {
const char *mybuf = "test";
char *yourbuf = "test2";
printf_s("%s\n", mybuf);
const char *bptr = mybuf; // Pointer to constant data
printf_s("%s\n", bptr);
// *bptr = 'a'; // Error
}
Output
test
test
È possibile utilizzare i puntatori ai dati costanti come parametri di funzione per impedire la funzione di modificare un parametro passato tramite un puntatore.
Per gli oggetti che vengono dichiarati come const, è possibile chiamare solo funzioni membro costanti.In questo modo che l'oggetto costante non sia mai modificata.
birthday.getMonth(); // Okay
birthday.setMonth( 4 ); // Error
È possibile chiamare funzioni membro costanti o non costanti per un oggetto non costante.È inoltre possibile eseguire l'overload di una funzione membro tramite const parola chiave; in questo modo una versione diversa della funzione da chiamare per gli oggetti costanti e non costanti.
Non è possibile dichiarare i costruttori o i distruttori con const parola chiave.
Differenze const C++ e c#
Quando si dichiara una variabile come const nei file di codice sorgente c, avviene per:
const int i = 2;
È quindi possibile utilizzare questa variabile in un altro modulo come segue:
extern const int i;
Ma per ottenere lo stesso comportamento in C++, è necessario dichiarare const variabile come:
extern const int i = 2;
Se si desidera dichiarare extern variabile nei file di codice sorgente C++ per l'utilizzo nei file di codice sorgente c, utilizzare:
extern "C" const int x=10;
per impedire imposizione del nome del compilatore C++.