C ++ decltype

C ++ decltype
“Il tipo di inferenza è la determinazione automatica del tipo di dati di un'affermazione in un linguaggio del computer. I possibili valori di un'espressione in fase di esecuzione sono stati vincolati dalla dichiarazione manuale di ciascun tipo di dati prima di C ++ 11. Se possiamo usare l'inferenza del tipo, possiamo scrivere meno codice per esprimere qualcosa che il compilatore capisce già. Sebbene il tempo di compilazione aumenti in modo significativo poiché tutti i tipi sono determinati solo durante la fase del compilatore, il tempo di esecuzione del programma non è influenzato. Qui discuteremo della parola chiave C ++ Decltype e della sua funzionalità."

Cos'è Decltype in C++

Guarda il tipo di entità o un'espressione dichiarata. DeclType è un tipo di operatore che esamina il tipo di espressione data, al contrario di "Auto", che consente di definire una variabile con un certo tipo ma consente di recuperare il tipo dalla variabile. Le informazioni del tipo sono fornite da DECLTYPE durante la compilazione e da TypeID durante l'esecuzione. Di conseguenza, se un oggetto di una classe derivata ha un riferimento o un puntatore di classe base che punta ad esso, TypeID fornirà il riferimento o il puntatore del tipo derivato anziché il tipo, che sarà fornito da Decttype.

Quando è necessario conoscere il tipo dinamico di un oggetto, viene utilizzato il typeid dell'operatore. Tuttavia, il nome reale che viene restituito è in qualche modo dipendente dal compilatore.

La sintassi generale C ++ prevede che Decrtype è la seguente:

Sintassi:

decltype (espressione)

Il decltype prende solo un parametro, che è un'espressione. Il decltype restituisce il tipo di parametro di espressione. Utilizzando le seguenti linee guida, il compilatore dipende dal tipo di parametro di espressione.

  • Quando il parametro di espressione è un accesso a un membro della classe o un identificatore, il tipo dell'oggetto identificato dall'espressione è decltype (espressione). Se tale oggetto non esiste o se l'argomento di espressione specifica un gruppo di funzioni sovraccarichi, il compilatore emette un messaggio di errore.
  • Se l'espressione di input chiama un metodo o una funzione dell'operatore con molti sovraccarichi, il tipo di restituzione di una data funzione è decltype (espressione).

Esempio 1

L'implementazione della discussione di cui sopra è fornita dal codice Decltype. Poiché più di una variabile, funzione, classe, ecc., non può avere lo stesso nome nell'ambito identico. Lo spazio dei nomi viene quindi introdotto per risolvere questo problema. Successivamente, abbiamo stabilito la funzione "MY_FUNC1" che restituisce il valore intero "5", poiché inizialmente abbiamo specificato il tipo di dati INT nella funzione "MY_FUNC1".

Ancora una volta, abbiamo stabilito una funzione come "my_func2" e abbiamo assegnato un tipo di dati Char ad esso. Questa funzione restituisce il valore del carattere "I". Successivamente, abbiamo costruito l'int main () del programma, dove abbiamo distribuito il modificatore Decltype. Il modificatore Decltype prende rispettivamente il "my_func1" e "my_func2". Al Decltype, abbiamo anche definito le due variabili come "A" e "B".

Le variabili "A" e "B" hanno gli stessi tipi di dati del tipo di ritorno di "MY_FUNC1" e "MY_FUNC2". Quindi, abbiamo un'istruzione cout in cui il typeid prende le variabili "a" e "b" come input e restituiranno il tipo di queste variabili.

#includere
Utilizzo dello spazio dei nomi std;
int my_func1 () return 5;
char my_func2 () return 'l';
int main ()

decltype (my_func1 ()) a;
decltype (my_func2 ()) b;
cout<cout<restituzione 0;

Poiché il tipo di "my_func1" è int e "my_func2" è char. Quindi, nell'output, viene restituito il tipo "I" e "C", il che indica il tipo INT e Char.

Esempio 2

Di seguito è riportata un'ulteriore illustrazione dell'uso di decltype, che è leggermente diverso da quello precedente. Abbiamo costruito direttamente il principale () di questo particolare programma dopo la sezione intestazione. All'interno del programma int main (), abbiamo dichiarato la variabile "num" e assegnato un numero "10" ad esso. Quindi, abbiamo chiamato il modificatore Decltype, che prende la variabile "num" come parametro. Con il modificatore Decltype, abbiamo anche impostato la variabile "i" che ha il tipo int lo stesso del tipo di variabile "num".

Quindi, abbiamo aggiunto NUM e il numero "10" utilizzando l'operatore più all'interno della variabile "I". Dopo questo, abbiamo un comando cout in cui viene invocato il typeid che prende la variabile "i" come input e fornisce il suo tipo.

#includere
Utilizzo dello spazio dei nomi std;
int main ()

int num = 10;
decltype (num) i = num + 10;
cout<< "decltype : " <restituzione 0;

Mentre forniamo il tipo INT alla variabile "num" nello snippet di codice sopra. L'output visualizza la parola "i" che è il valore del tipo int della variabile "num".

Esempio 3

I numeri numerici minimi vengono restituiti dal metodo del modello C ++ Min Type (), che viene visualizzato di seguito. Qualsiasi tipo integrale può essere utilizzato per i due numeri. Il tipo minimo di due viene utilizzato per determinare il tipo di ritorno.

Con il modificatore automatico, abbiamo creato la funzione Searchmin () e abbiamo superato le variabili X e Y come parametro al suo interno. Quindi, abbiamo assegnato i nomi delle variabili alla parola chiave Decltype. Il decltype prende la variabile con l'espressione condizionale. La funzione cerca il valore minimo e restituisce il tipo di variabile che ha il valore minimo. Successivamente, all'interno di Int Main (), abbiamo passato il valore alla funzione Seatchmin tramite il comando Cout.

#includere
Utilizzo dello spazio dei nomi std;
modello
Auto Searchmin (T1 X, T2 Y) -> Decltype (x < y ? x : y)

restituzione (x < y) ? x: y;

int main ()

cout<cout<restituzione 0;

L'output ha visualizzato i valori minimi di seguito. Come dalla prima istruzione Searchmin, 4.55 viene restituito dal doppio tipo. Quindi la seconda istruzione, 2, è ottenuta dal tipo di dati INT.

Conclusione

Questo è tutto per C ++ Decltype. Ne abbiamo discusso brevemente con la definizione, la sua sintassi e la sua funzionalità in questo particolare articolo. Qui, abbiamo mostrato il Decltype che lavora con il codice di esempio in esecuzione in C++. Tutti i casi sono distinti l'uno dall'altro. Le istanze differiscono l'una dall'altra. Lo script Decltype con il prefisso automatico è dimostrato nell'ultimo esempio. La parola chiave di detrazione del tipo automatico, Auto, viene utilizzata in C ++ 11 e oltre.