4️⃣Programmazione Generica [14]

Si discuta l’implementazione del paradigma di programmazione generica del C++, riferendosi all’implementazione di funzioni e classi (7 punti).

Risposta 1

Il paradigma della programmazione generica (GP) in C++ permette di scrivere codice che opera su tipi di dato generici, senza doverlo riscrivere per ogni tipo specifico.

template <typename T>
tipo_ritorno nome_funzione(parametri) {
  // Implementazione della funzione
  }
  • template <typename T>: indica che la funzione è generica e accetta un tipo di dato generico T.

  • tipo_ritorno: specifica il tipo di dato restituito dalla funzione.

  • nome_funzione: nome identificativo della funzione.

  • parametri, parametri generici all'ingresso della funzione


Indicare come strutturare il codice nei file sorgenti (2 punti).

Risposta 2

File Header (*.h):

  • Contiene la dichiarazione dei template (funzioni e classi generiche).

  • Include le direttive di preinclusione necessarie.

  • Definisce le costanti e i tipi di dato utilizzati dai template.


File di Implementazione (*.cpp):

  • Contiene l'implementazione delle funzioni e dei metodi delle classi generiche.

  • Include il file header corrispondente.

  • Definisce le funzioni ausiliarie e il codice specifico per ogni istanziazione del template.


Discutere il meccanismo della specializzazione e dei requisiti impliciti (5 punti).

Risposta 3

La specializzazione dei template permette di specificare implementazioni diverse per un tipo di dato, nonostante derivi da un'implementazione generica.

template <>
int nome_funzione<int>(int x, int y) {
  // Implementazione specifica per interi
}

Esistono requisiti impliciti che i tipi di dato devono avere per poter essere utilizzati con i template che richiedono determinate operazioni:

  • Uguaglianza e disuguaglianza.

  • Costruttori di copia e di assegnamento

  • altri operatori e funzioni

Last updated