Ci sono vantaggi nel dichiarare le variabili di stack costanti in C ++

5

Non mi è chiaro quali vantaggi ci siano di dichiarare le variabili di stack come costanti in C ++, speravo che qualcuno potesse spiegare i vantaggi e lo scopo di questa tecnica.

Ad esempio:

void func(const std::string& arg)
{
   if(someCondition)
   {
      const std::string foo ("some string plus " + arg);
      std::out << foo << std::endl;
      someFunction(foo);
      // dozens more lines of code...
   }
   // bla bla bla...
}

Grazie!

    
posta cppguy 19.02.2014 - 02:23
fonte

1 risposta

14

Sì.

  1. Aiuta il lettore a comprendere le tue intenzioni. Chiaramente a foo viene dato un valore iniziale e non è mai cambiato da allora in poi.

  2. Aiuta il compilatore a ottimizzare il tuo codice, sia per la velocità che per lo spazio. Il compilatore può eseguire alcune ottimizzazioni come il sollevamento di valori da loop se c'è una promessa che il valore non può cambiare. Questo è particolarmente vero se il valore ha un alias, il quale altrimenti annullerebbe l'ottimizzazione.

  3. Occasionalmente cattura dei bachi quando scrivi accidentalmente del codice per modificare qualcosa che non volevi.

Dal lato negativo, potresti non essere in grado di passare il valore in una funzione che accetta argomenti non-const.

    
risposta data 19.02.2014 - 10:14
fonte

Leggi altre domande sui tag