Menu
Coddy logo textTech

C++ Cheat Sheet

Ultimo aggiornamento

Hello World e struttura del programma

L'esecuzione parte da main, che restituisce un int.

ElementoCodice
Includere un header#include <iostream>
Punto di ingressoint main() { ... }
Stampare una rigastd::cout << "Hello, World!" << std::endl;
Leggere l'inputstd::cin >> x;
Usare il namespace stdusing namespace std;
Restituire successoreturn 0;
Commenti// line e /* block */

Tipi di dati

TipoDescrizione
intIntero (di solito 32 bit)
long / long longInteri più ampi
float / doubleNumeri in virgola mobile
charSingolo byte / carattere
booltrue o false
std::stringTesto dinamico da <string>
autoIl compilatore deduce il tipo
std::size_tTipo senza segno per dimensioni e indici

Variabili e riferimenti

I riferimenti sono alias; i puntatori contengono indirizzi.

OperazioneSintassi
Dichiarare e inizializzareint x = 5;
Inizializzazione con graffeint x{5};
Costanteconst double PI = 3.14159;
Costante a tempo di compilazioneconstexpr int N = 10;
Riferimento (alias)int &r = x;
Puntatoreint *p = &x;
Dereferenziare un puntatore*p = 10;
Inferenza del tipoauto y = 3.14;

Controllo del flusso

IstruzioneSintassi
If / elseif (x > 0) { ... } else { ... }
Switchswitch (n) { case 1: ...; break; default: ...; }
Ciclo whilewhile (i < n) { ... }
Ciclo do-whiledo { ... } while (i < n);
Ciclo forfor (int i = 0; i < n; i++) { ... }
For basato su rangefor (auto x : vec) { ... }
For su range per riferimentofor (auto &x : vec) { ... }
Break / continuebreak; esce da un ciclo, continue; passa all'iterazione successiva

Funzioni

OperazioneSintassi
Definire una funzioneint add(int a, int b) { return a + b; }
Nessun valore di ritornovoid greet() { ... }
Argomenti predefinitiint pow(int b, int e = 2) { ... }
Passaggio per riferimentovoid inc(int &x) { x++; }
Riferimento const (nessuna copia)void print(const std::string &s) { ... }
Overloadingint max(int a, int b); e double max(double a, double b);
Lambdaauto f = [](int x) { return x * 2; };
Lambda con catturaauto g = [n](int x) { return x + n; };

Classi e OOP

OperazioneSintassi
Definire una classeclass Dog { ... };
Specificatori di accessopublic:, private:, protected:
Variabile membrostd::string name;
ConstructorDog(std::string n) : name(n) {}
Destructor~Dog() { ... }
Funzione membrovoid bark() { ... }
Creare un oggettoDog d("Rex");
Ereditarietàclass Puppy : public Dog { ... };
Funzione virtualevirtual void speak();

Container STL

I container più comuni della libreria standard.

ContainerUso ed esempio
std::vector<int>Array dinamico: v.push_back(1); v.size();
std::stringTesto: s += "!"; s.length();
std::array<int, 3>Array a dimensione fissa con info sui limiti
std::map<K, V>Chiave-valore ordinato: m["a"] = 1;
std::unordered_map<K, V>Hash map (ricerca più veloce, nessun ordine)
std::set<T>Valori unici ordinati: s.insert(5);
std::pair<A, B>Due valori: make_pair(1, "x")
std::queue / std::stackAdattatori coda FIFO / pila LIFO

Algoritmi e iteratori STL

Da <algorithm>; quasi tutti accettano un intervallo di iteratori begin/end.

OperazioneSintassi
Iteratori begin / endv.begin(), v.end()
Ordinarestd::sort(v.begin(), v.end());
Ordinare in modo decrescentestd::sort(v.begin(), v.end(), std::greater<int>());
Trovare un valoreauto it = std::find(v.begin(), v.end(), 5);
Contare le corrispondenzestd::count(v.begin(), v.end(), 5);
Elemento minimo / massimostd::max_element(v.begin(), v.end());
Sommare un intervallostd::accumulate(v.begin(), v.end(), 0);
Trasformare ogni elementostd::transform(v.begin(), v.end(), v.begin(), fn);

Smart pointer e C++ moderno

Preferisci gli smart pointer a new/delete grezzi per una pulizia automatica.

FunzionalitàSintassi
Proprietà unicaauto p = std::make_unique<Dog>("Rex");
Proprietà condivisaauto p = std::make_shared<Dog>("Rex");
Riferimento non proprietariostd::weak_ptr<Dog> w = p;
Semantica di spostamentoauto v2 = std::move(v1);
Nullptrint *p = nullptr;
Structured bindingauto [key, val] = *it;
Valore opzionalestd::optional<int> maybe;
Templatetemplate <typename T> T add(T a, T b) { return a + b; }

La sintassi, i container STL e le funzionalità moderne di C++ che usi di più, in una sola pagina. Questa cheat sheet di C++ è un riferimento rapido per scrivere in C++: tipi di dati, riferimenti, classi, i container della libreria standard come vector e unordered_map e gli smart pointer che sostituiscono new/delete grezzi.

Tutto quello che trovi qui è C++ standard (C++11 e successivi) e si compila con g++ o clang++. Copia quello che ti serve oppure prova qualsiasi frammento dal vivo nel playground C++, senza installare nessun compilatore. Stai imparando il linguaggio? Il corso interattivo gratuito di C++ di Coddy copre puntatori, STL e classi passo dopo passo.

Domande frequenti sulla cheat sheet di C++

Questa cheat sheet di C++ è gratuita?
Sì. Questa cheat sheet di C++ è completamente gratuita e non richiede registrazione. Salvala nei preferiti e torna quando devi controllare la sintassi, un container STL o uno smart pointer.
Qual è la differenza tra puntatore e riferimento in C++?
Un puntatore è una variabile che contiene un indirizzo; può essere nullo, può essere riassegnato per puntare altrove e lo dereferenzi con *p. Un riferimento (int &r = x) è un alias di una variabile esistente: va collegato al momento della dichiarazione, non può mai essere nullo né ricollegato e si usa come la variabile stessa. Usa i riferimenti per parametri passati per riferimento più puliti e i puntatori quando ti serve un'indirezione opzionale o riassegnabile.
Meglio new/delete o gli smart pointer?
Meglio gli smart pointer. std::unique_ptr e std::shared_ptr (tramite make_unique/make_shared) liberano la memoria automaticamente quando escono dallo scope, evitando i memory leak e le doppie deallocazioni tipiche della gestione manuale con new/delete. Usa new/delete grezzi solo nel codice di basso livello che ha un motivo preciso per farlo.
Posso esercitarmi con il C++ online?
Sì. Apri il playground C++ per compilare ed eseguire nel browser qualsiasi frammento di questa cheat sheet, senza installare un compilatore. Quando vuoi un percorso strutturato, il corso interattivo gratuito di C++ di Coddy ti porta passo dopo passo da variabili e cicli fino a classi e STL.
Questa cheat sheet va bene per chi inizia?
Sì. È organizzata dai mattoni più comuni (tipi, controllo del flusso, funzioni) fino a quelli avanzati (STL e smart pointer), così puoi usare le prime sezioni fin dal primo giorno e arrivare al resto con il tempo.
Illustrazione dei linguaggi di programmazione di Coddy

Impara C++ con Coddy

INIZIA