C++: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Annullata la modifica di 93.51.128.146 (discussione), riportata alla versione precedente di Datolo12
Etichetta: Rollback
Gmilza (discussione | contributi)
Descrizione: Espansione della sezione marcando meglio la dicotomia linguaggio-libreia dello standard, aggiunta e correzione di citazioni e collegamenti
Riga 42:
 
== Descrizione ==
 
=== Linguaggio ===
La prima parte dello standard definisce le caratteristiche fondamentali del linguaggio<ref>{{Cita libro|lingua=inglese|autore=Bjarne Stroustrup|titolo=The C++ Programming Language, 4th Edition|capitolo=2.2 The Basics}}</ref>. Lo standard suddivide questa parte in argomenti<ref>{{Cita web|lingua=en|url=https://www.iso.org/standard/83626.html|titolo=ISO/IEC 14882:2024 Programming languages — C++|accesso=23 aprile 2025}}</ref><ref>{{Cita web|lingua=en|url=https://www.iso.org/obp/ui/en/#iso:std:iso-iec:14882:ed-7:v1:en|titolo=ISO/IEC 14882:2024(en) Programming languages — C++|accesso=23 aprile 2025}}</ref>:
 
* la dichiarazione e definizione delle [[Variabile (informatica)|variabili]], incluso il loro ciclo di vita, come sono modellate in memoria e i tipi fondamentali
* le [[Espressione (informatica)|espressioni]] e la loro grammatica, come si definiscono, come si compongono (per esempio usando gli [[Operatori in C e C++|operatori]]) e come avvengono le conversioni tra di loro
* le [[Struttura di controllo|strutture di controllo]] quali ad esempio if, for, while, break, return
* dichiarazioni e inizializzatori in generale: [[Funzione (informatica)|funzioni]], enum, [[namespace]], attributi e gli specificatori come [[Allocazione statica della memoria|static]], friend e inline
* i moduli
* le [[Classe (informatica)|classi]]
* [[Overloading|overload]] di funzioni e operatori
* i [[Programmazione generica|template]]
* le eccezioni
* le direttive del [[preprocessore]]
 
La sintassi di base del C++ è un estensione di quella del linguaggio C<ref name="c_comp">{{Cita libro|lingua=inglese|autore=Bjarne Stroustrup|titolo=The C++ Programming Language, 4th Edition|capitolo=44.3 C/C++ Compatibility|citazione=With minor exceptions, C++ is a superset of C}}</ref>. Alcuni punti in cui le differenze sono visibili sono la presenza di numerose parole chiave specifiche del linguaggio C++ e l'utilizzo di funzionalità specifiche come i template e i reference rvalue<ref>{{Cita libro|lingua=inglese|autore=Bjarne Stroustrup|titolo=The C++ Programming Language, 4th Edition|capitolo=44.3.1 C and C++ Are Siblings, 44.3.3 C Code That Is Not C++}}</ref>.
 
=== Libreria standard ===
LoLa seconda parte dello [[Norma tecnica|standard]] del C++ delriguarda la [[1998Libreria standard C++|libreria standard]]; consistequest'ultima è un insieme di duecomponenti<ref>{{Cita partilibro|lingua=inglese|autore=Nicolai M. Josuttis|titolo=C++ Standard Library, The: ilA nucleoTutorial deland linguaggioReference, e2nd laEdition|capitolo=1.3. [[LibreriaStyle standardand delStructure of Cthe Book|libreriacitazione=The C++ standard]]; quest'ultimalibrary includeprovides lacomponents maggiorthat parteare dellasomewhat, but not totally, independent of one another}}</ref> di cui una porzione importante è la [[Standard Template Library]] (STL)<ref>{{Cita libro|lingua=inglese|autore=Nicolai M. Josuttis|titolo=C++ Standard Library, The: A Tutorial and Reference, 2nd Edition|capitolo=1.3. Style and Structure of the Book|citazione=There is no doubt that the STL is the most powerful, most complex, and most exciting part of the library}}</ref>. Esistono molte librerie per il C++ che non fanno parte dello standard ed è possibile, usando il linking esterno, utilizzare anche le librerie scritte per il linguaggio C. La STL era in origine una libreria di terze parti, sviluppata da [[Hewlett-Packard|HP]] e in seguito da [[Silicon Graphics]], prima che venisse incorporata nel C++ standard. Lo standard non si riferisce a essa come alla "STL", poiché è semplicemente parte della libreria completa, ma molti continuano a usare il termine<ref>{{Cita libro|lingua=inglese|autore=Marc Gregoire|titolo=Professional C++, 5th Edition|capitolo=16 Overview of the C++ Standard Library|citazione=The heart of the C++ Standard Library is its generic containers and algorithms. Some people still call this subset of the library the Standard Template Library, or STL for short, because originally it was based on a third-party library called the Standard Template Library, which used templates abundantly. However, STL is not a term defined by the C++ standard itself}}</ref> per distinguerla dal resto della libreria (come flussi di I/O, internazionalizzazione, funzioni diagnostiche, ecc.).
 
La maggior parte dei compilatori fornisce anche un'implementazione della libreria standard, STL compresa. Esistono anche versioni indipendenti dal compilatore della STL, come ad esempio la [[STLPort]].<ref>{{Cita web |url=http://www.stlport.org|titolo=STLport: Welcome!<!-- Titolo generato automaticamente -->}}</ref>