0Pricing
C++ Academy · Lezione

auto, decltype e deduzione dei tipi

Lasci che il compilatore deduca i tipi con auto e decltype per ottenere codice più chiaro

auto, decltype e deduzione dei tipi è una lezione C++ Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C++ Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C++ Academy include 4 lezioni in totale.

Deduzione dei tipi nel C++ moderno

A partire da C++11, il compilatore può dedurre i tipi in molti contesti. Questo rende il codice più breve e meno soggetto a errori, se utilizzato con criterio.

La parola chiave auto

auto deduce il tipo dall'inizializzatore in fase di compilazione. La variabile mantiene comunque un tipo fisso, noto staticamente.

auto i = 42;          // int
auto d = 3.14;        // double
auto s = "hello";     // const char*
auto v = std::vector<int>{1,2,3};   // std::vector<int>

auto e const

Per impostazione predefinita, auto rimuove const e riferimenti di primo livello. Li aggiunga esplicitamente quando desidera mantenerli.

const int n = 10;
auto a = n;            // int (const dropped)
const auto& b = n;     // const int&

auto con gli iteratori

I nomi dei tipi degli iteratori sono lunghi. È qui che auto dà il meglio di sé.

std::map<std::string, int> ages = {{"Ada", 30}};
auto it = ages.find("Ada");
// vs std::map<std::string,int>::iterator it = ...

for basato su intervallo e auto

Utilizzi auto& per iterare senza effettuare copie.

for (const auto& [name, age] : ages) {
    std::cout << name << ": " << age << "\n";
}

Tipi restituiti finali

Le funzioni possono utilizzare auto come segnaposto del tipo restituito, specificando il tipo con una freccia finale: è utile nei template.

auto add(int a, int b) -> int {
    return a + b;
}

Deduzione del tipo restituito in C++14

C++14 consente di utilizzare tipi restituiti auto semplici: il compilatore li deduce dall'istruzione return.

auto multiply(double x, double y) {
    return x * y;       // deduced as double
}

decltype: ottenere il tipo di un'espressione

decltype(expr) restituisce il tipo di expr in fase di compilazione. A differenza di auto, conserva riferimenti e const.

int x = 0;
int& r = x;
decltype(r) ref = x;  // int&
decltype(x) val = 0;  // int

decltype(auto)

Combina la deduzione con le regole di decltype e preserva il tipo esatto dell'espressione, inclusa la categoria di valore.

auto         a = some_func();   // copy
decltype(auto) b = some_func();  // exact type, including references

Quando evitare auto

Eviti auto quando il tipo dedotto non è ovvio, ad esempio con letterali numerici grandi, operazioni miste o dimensioni dipendenti dalla piattaforma. Per una maggiore leggibilità, specifichi esplicitamente il tipo.

Stile «auto quasi sempre»

Alcune guide di stile consigliano auto per tutte le variabili, così da evitare conversioni implicite. Altre preferiscono i tipi espliciti. Scelga una convenzione e la applichi in modo coerente.

Verifica rapida

Qual è la differenza tra auto e decltype(auto) quando si restituisce un riferimento?

Riepilogo

auto deduce i tipi dagli inizializzatori; decltype restituisce il tipo di un'espressione; decltype(auto) deduce il tipo preservando i riferimenti. Li usi per ridurre il codice superfluo, senza compromettere la leggibilità.

Domande Frequenti

La lezione «auto, decltype e deduzione dei tipi» è gratuita?

Sì — il testo completo di «auto, decltype e deduzione dei tipi» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C++ Academy, passa a CoddyKit PRO. Il corso C++ Academy include 4 lezioni in totale.

Cosa imparerò in «auto, decltype e deduzione dei tipi»?

Lasci che il compilatore deduca i tipi con auto e decltype per ottenere codice più chiaro Eserciti C++ Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare C++ Academy?

Non è richiesta alcuna esperienza precedente. C++ Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «auto, decltype e deduzione dei tipi»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione C++ Academy?

Sì. Ogni lezione C++ Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. auto, decltype e deduzione dei tipi
  2. Range-based for, nullptr ed enum class
  3. Espressioni lambda: capture, mutable e generiche
  4. Structured bindings e if-init in C++17
← Torna a C++ Academy