Condividi tramite


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.

357syhfh.collapse_all(it-it,VS.110).gifDifferenze 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++.

Vedere anche

Riferimenti

const (C++)

Funzioni membro costanti