L'header file della classe iniziale è (Vettore.h) potrebbe essere così :

- Notate l'utilizzo del costrutto #ifndef .... #define .... #endif.
Queste direttive di preprocessore sono normalmente utilizzate per evitare inclusioni multiple di uno stesso header file che, nel caso specifico, porterebbero ad una doppia dichiarazione della classe Vettore. Immaginate infatti di voler compilare un codice main.cpp insieme ad un file funzioni.cpp e che entrambi i codici sorgente contengano una istruzione #include "Vettore.h": in fase di compilazione il compilatore si lamenterebbe per una doppia dichiarazione della classe Vettore. Con il meccanismo indicato, alla prima inclusione di Vettore.h, viene creata una variabile globale __Vettore_h__. Al secondo tentativo di inclusione l'esistenza della variabile globale forza il compilatore a saltare tutte le righe tra #define .... #endif, di fatto evitando la seconda inclusione del file Vettore.h.
- Notate inoltre l'impementazione in-line del metodo GetN(): i metodi di una classe possono essere anche implementati direttamente nell'header file (.h)e non nel .cpp. L'implementazione inline implica che il compilatore metta una copia della funzione ogni volta che questa viene chiamata: in questo modo il codice diventa più lungo ma vengono ottimizzate le performance in quanto non si deve effettuare una chiamata alla funzione. In genere l'implementazione inline viene effettuata per funzioni brevi.
|