C++ Ciao mondo


Esempio

Questo programma stampa Hello World! al flusso di output standard:

#include <iostream>

int main()
{
    std::cout << "Hello World!" << std::endl;
}

Guardalo dal vivo su Coliru .

Analisi

Esaminiamo in dettaglio ciascuna parte di questo codice:

  • #include <iostream> è una direttiva per il preprocessore che include il contenuto del file di intestazione standard di C ++ iostream .

    iostream è un file di intestazione di libreria standard che contiene le definizioni degli stream di input e output standard. Queste definizioni sono incluse nello spazio dei nomi std , spiegato di seguito.

    Gli stream standard di input / output (I / O) forniscono ai programmi modalità per ottenere input e output su un sistema esterno, in genere il terminale.

  • int main() { ... } definisce una nuova funzione denominata main . Per convenzione, la funzione main viene chiamata all'esecuzione del programma. Ci deve essere una sola funzione main in un programma C ++ e deve sempre restituire un numero del tipo int .

    Qui, l' int è quello che viene chiamato il tipo di ritorno della funzione. Il valore restituito dalla funzione main è un codice di uscita.

    Per convenzione, un codice di uscita del programma pari a 0 o EXIT_SUCCESS viene interpretato come esito positivo da un sistema che esegue il programma. Qualsiasi altro codice di ritorno è associato a un errore.

    Se non è presente alcuna dichiarazione di return , la funzione main (e quindi il programma stesso) restituisce 0 per impostazione predefinita. In questo esempio, non è necessario scrivere esplicitamente return 0; .

    Tutte le altre funzioni, ad eccezione di quelle che restituiscono il tipo void , devono restituire esplicitamente un valore in base al tipo restituito, altrimenti non devono restituire del tutto.

  • std::cout << "Hello World!" << std::endl; stampa "Hello World!" al flusso di output standard:

    • std è uno spazio dei nomi e :: è l' operatore di risoluzione dell'ambito che consente di cercare oggetti per nome all'interno di uno spazio dei nomi.

      Ci sono molti spazi dei nomi. Qui, usiamo :: per mostrare che vogliamo usare cout dallo spazio dei nomi std . Per ulteriori informazioni, consultare Operatore risoluzione ambito - Documentazione Microsoft .

    • std::cout è l'oggetto standard del flusso di output , definito in iostream , e stampa sullo standard output ( stdout ).

    • << è, in questo contesto , l' operatore di inserimento del flusso , così chiamato perché inserisce un oggetto nell'oggetto del flusso .

      La libreria standard definisce l'operatore << per eseguire l'inserimento dei dati per determinati tipi di dati in flussi di output. stream << content inserisce il content nello stream e restituisce lo stesso flusso ma aggiornato. In questo modo è possibile concatenare inserimenti di stream: std::cout << "Foo" << " Bar"; stampa "FooBar" sulla console.

    • "Hello World!" è un letterale stringa di caratteri o un "testo letterale". L'operatore di inserimento del flusso per i valori letterali delle stringhe di caratteri è definito nel file iostream .

    • std::endl è uno speciale oggetto manipolatore di flusso I / O , anch'esso definito nel file iostream . L'inserimento di un manipolatore in un flusso cambia lo stato del flusso.

      Il manipolatore di flusso std::endl fa due cose: prima inserisce il carattere di fine riga e poi scarica il buffer del flusso per forzare la visualizzazione del testo sulla console. Ciò garantisce che i dati inseriti nello stream vengano effettivamente visualizzati sulla tua console. (I dati di flusso vengono solitamente memorizzati in un buffer e quindi "svuotati" in batch, a meno che non si imponga immediatamente un lavaggio.)

      Un metodo alternativo che evita il flush è:

      std::cout << "Hello World!\n";
      

      dove \n è la sequenza di escape dei caratteri per il carattere di nuova riga.

    • Il punto e virgola ( ; ) notifica al compilatore che un'istruzione è terminata. Tutte le istruzioni C ++ e le definizioni di classe richiedono un punto e virgola di fine / fine.