Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
2021/2022
Primo Appello | 25.01.2022
Nome: _______________________________________
Cognome: _______________________________________
Matricola: _______________________________________
Quiz
Per ciascuna risposta, selezionare vero o falso. Una risposta corretta vale 1 punto, una risposta sbagliata
-0.25 e una risposta non data 0 punti (il totale sarà normalizzato). Riportare chiaramente la risposta data. Nel
caso la risposta non sia riportata chiaramente verranno assegnati 0 punti. Durata della prova: 90 minuti.
1) Le include guards:
● Assicurano che il compilatore processi una sola volta il file incluso dalle guards [V][F]
● Permettono che il linker conosca il nome del file incluso dalle guards [V][F]
● Sono delle direttive del preprocessore [V][F]
● Sono usate per evitare la doppia dichiarazione/definizione di funzioni e classi [V][F]
2) Le librerie dinamiche:
● Permettono di generare eseguibili self-contained [V][F]
● Possono essere ricompilate senza ricompilare gli eseguibili che le utilizzano [V][F]
● Hanno lo svantaggio di creare software che occupa molto spazio su disco [V][F]
● In windows sono caratterizzate dall’estensione .so e in Linux .dll [V][F]
8) In relazione a un container STL, gli iteratori begin e end, restituiti dalle funzioni membro begin() e end():
● Sono sempre disponibili [V][F]
● begin punta al primo elemento, end all'ultimo elemento [V][F]
● Devono essere dereferenziati (operatore *) per poter accedere al dato contenuto [V][F]
● Possono essere uguali - ovvero: begin() == end() è true [V][F]
9) Siano dati: una classe base B e una classe derivata D, entrambe contenenti la funzione void f(), un oggetto
b di tipo B, un oggetto d di tipo D, un puntatore p di tipo B* che punta a d:
● L'inserimento di p in uno std::vector causa il fenomeno dello slicing [V][F]
● L'inserimento di d in uno std::vector causa il fenomeno dello slicing [V][F]
● La chiamata p->f() causa la chiamata di D::f() solo se la funzione è virtuale [V][F]
● La chiamata d.f() causa la chiamata di D::f() solo se la funzione è virtuale [V][F]
2) Descrivere le caratteristiche fondamentali degli smart pointers. Illustrare le differenze fra unique_ptr<T>
e shared_ptr<T>. Descrivere il comportamento delle seguenti funzioni della classe unique_ptr<T>:
reset() e release().
3) Definire l'aritmetica dei puntatori illustrando: 1) il concetto alla base dell'aritmetica; 2) con quali
operatori e operandi funziona; 3) due esempi di funzionamento, ciascuno corredato da codice che deve
essere commentato mediante descrizione e/o grafici.