Variabili statiche e scope

di dna_programmer il
5 risposte
Salve a tutti, gentilmente mi potreste spiegare il perché quando abbiamo variabili statiche nelle classi, per richiamarle all'esterno bisogna usare lo scope(":").

5 Risposte

  • Ciao dna_programmer
    in quasta classe:
    
    // file .h
    class MyClass
    {
    public:
    	int a;
    	static int b;
    };
    
    // file .cpp
    int MyClass::b;
    
    Ci sono due variabili, 'a' è chiamata di istanza e 'b' di classe.

    Le variabili di istanza possono avere un valore diverso per ogni istanza della classe e vi si accede col '.' dopo il nome dell' istanza.
    
    MyClass p;
    p.a = 5;
    
    Le variabili di classe (quelle dichiarare con static) invece sono uniche per tutte le istanze della classe (è un po come se fosse una variabile globale) e non è necessario specificare una istanza per modificarle, ad es:
    
    MyClass::b = 9;
    
    Dopo questa istruzione tutte le istanze di MyClass avranno b = 9.
  • Ciao, quindi le variabili statiche hanno lo stesso valore per ogni oggetto dello stesso tipo, giusto?
    Quindi ritornando al vecchio discorso dello scope, riassumendo si usa con le enumerazioni, per i namespace e quando le variabili sono statiche, ho capito bene??
  • Si, hai capito giusto, inoltre c' è un altro caso in cui si usa '::', prova a guardare l' ultimo esempio che ti avevo fatto nel thread dello scope (era l' esempio con le classi derivate).
  • A ok quindi riassumendo lo scope si usa:

    1) per i namespace
    2)quando in una classe derivata dobbiamo richiamata un metodo che è presente sia nella classe base che in quella derivata
    3) Per le enumerazioni
    4)per le variabili statiche
    Giusto?
  • OK
Devi accedere o registrarti per scrivere nel forum
5 risposte