Membri di classe statici.

Una caratteristica molto interessante sono i membri statici della classe - variabili e oggetti. Se rendi un membro di una classe statico, quindi esisterà solo in un'istanza per tutti gli oggetti della classe.
  • Variabile - diventerà globale per tutti gli oggetti creati. Inoltre, è possibile accedere a questa variabile direttamente per conto della classe, senza la partecipazione di oggetti. Una variabile di classe statica deve essere dichiarata separatamente dalla classe (ovvero creata come oggetto).
  • Funzione (metodo) - puoi accedervi direttamente per conto della classe, senza la partecipazione di oggetti. Importante, un metodo statico può cambiare solo variabili statiche, perché non è legato a un oggetto, cioè non sa con quale variabile oggetto interagire.
Un esempio che mostra tutto quanto sopra:
class myClass 
     public: 
          void setVal(byte val) 
          { 
               static_val = val; 
          } 
          byte getVal() 
          { 
               return static_val
          } 
          static byte getValStatic() 
          { 
               return static_val
          } 
          static byte static_val;
};
// assicurati di creare una variabile di classe statica separata
byte myClass::static_val;
// crea due oggetti
myClass myObjects1, myObjects2;
void setup() 
     Serial.begin(9600); 
 // possiamo lavorare con un membro statico senza essere vincolati a un oggetto,
 // indicare l'appartenenza alla classe con ::
     myClass::static_val = 10;
// stampa 10 in tutti i casi tramite il metodo del primo oggetto 
     Serial.println(myObjects1.getVal());
// tramite il metodo del secondo oggetto 
     Serial.println(myObjects2.getVal());
// tramite un metodo statico senza vincolarsi a un oggetto 
// indica l'appartenenza alla classe tramite :: 
     Serial.println(myClass::getValStatic());
// cambia static_val attraverso un metodo di qualsiasi oggetto 
     myObjects2.setVal(50);
 // stampa 50 in tutti i casi
     Serial.println(myObjects1.getVal()); 
     Serial.println(myObjects2.getVal()); 
     Serial.println(myClass::getValStatic());
}
void loop() 
{

Crea il tuo sito web gratis! Questo sito è stato creato con Webnode. Crea il tuo sito gratuito oggi stesso! Inizia