Video: C++ Libreria QT (playlist 1) ITA 12: DBMS - MySQL (MariaDB) seconda parte 2024
La libreria standard C ++ fornisce un set completo di operazioni matematiche, temporali, di input / output e DOS, solo per citarne alcuni. Molti dei primi programmi che impari come principianti usano le cosiddette funzioni di stringa di caratteri definite nelle stringhe di file di inclusione .
I tipi di argomento per molte di queste funzioni sono corretti. Ad esempio, entrambi gli argomenti su strcpy (char *, char *) devono essere un puntatore a una stringa di caratteri con terminazione null - non ha senso nient'altro.
Ci sono funzioni applicabili a più tipi. Considera l'esempio della funzione lowly maximum (), che restituisce il massimo di due argomenti. Tutte le seguenti varianti hanno senso:
int massimo (int n1, int n2); // restituisce un massimo di due numeri interi senza segno (U1 senza segno, U2 senza segno); doppio massimo (doppio d1, doppio d2); massimo char (char c1, char c2);
Qui, ti piacerebbe implementare il massimo () per tutti e quattro i casi.
Ovviamente, è possibile sovraccaricare massimo () con tutte le possibili versioni:
doppio massimo (doppia d1, doppia d2) {ritorno (d1> d2)? d1: d2;} int massimo (int n1, int n2) {return (n1> n2)? n1: n2;} char massimo (char c1, char c2) {return (c1> c2)? c1: c2;} // … ripetere per tutti gli altri tipi numerici …
Questo approccio funziona. Ora C ++ seleziona la migliore corrispondenza, massima (int, int) , per un riferimento come massimo (1, 2) . Tuttavia, creare la stessa funzione per ogni tipo di variabile è una perdita di tempo.
Il codice sorgente per tutte le funzioni massime (T, T) segue lo stesso schema, dove T è uno dei tipi numerici. Sarebbe molto comodo se si potesse scrivere la funzione una sola volta e lasciare che C ++ fornisse il tipo T come necessario quando si utilizza la funzione. In effetti, C ++ ti permette di fare esattamente questo. Sono chiamati definizioni template .