Esempio:
// Dichiarazione C: #define MIA_COSTANTE_NUMERICA 5; //Dichiarazione C++ const int MIA_COSTANTE_NUMERICA = 5;In questo caso la variabile MIA_COSTANTE_NUMERICA, come il nome suggerisce, assume un valore iniziale che non può essere più cambiato all'interno del programma.
La parola chiave const, però, legata sempre al concetto di costante, può essere posta, nell'uso con variabili puntatore, anche in altre posizioni assumendo un significato diverso e permettendo utilizzi diversi alla variabile a cui è associata.
Vediamo un breve listato di codice che illustra i possibili usi ed abusi con i relativi messaggi di errore. (il compilatore usato è quello Microsoft).
int _tmain(int argc, _TCHAR* argv[]) { int var = 1; int var2 = 2; const int MIA_VAR_COSTANTE = 7; MIA_VAR_COSTANTE = 5; // Errore C3892 // puntatore ad una costante numerica const int* ptrConstVar = &var; std::cout << *ptrConstVar << std::endl; *ptrConstVar = 5; // Errore C3892 // lecito, perché si cambia la locazione a cui si punta, ma non il valore ptrConstVar = &var2; std::cout << *ptrConstVar << std::endl; // puntatore costante ad una variabile numerica int* const constPtrVar = &var; constPtrVar = &var2; // Errore C3892 std::cout << *constPtrVar << std::endl; /* il puntatore alla locazione di memoria ora non viene cambiato, ma ne possiamo cambiare il contenuto cambiando, di conseguenza, anche il valore della variabile var. */ *constPtrVar = 3; std::cout << *constPtrVar << "ed ora var = " << var << std::endl; // puntatore costante ad una costante numerica const int* const ConstPtrConstVar = &var; *ConstPtrConstVar = 3; // Errore C3892 ConstPtrConstVar = &var2; // Errore C3892 return 0; }
Nessun commento:
Posta un commento
Mi raccomando, non costringermi a censurare il tuo commento, perciò sii educato!