Il C++ è molto diffuso e apprezzato, ma raramente è usato al massimo
delle sue potenzialità: la semantica
del C++ è molto ricca di dettagli e sfumature che condizionano il
comportamento del codice, e che molto spesso i compilatori
implementano in maniera scorretta o incompleta: molte delle
caratteristiche dello standard ISO del linguaggio non sono ancora
implementate nei compilatori attuali, anche se la situazione sta
migliorando lentamente. La grande ricchezza semantica del C++, insieme
alle librerie che lo accompagnano, lo rende un linguaggio estremamente
espressivo e potente, ma che richiede molto tempo per venire appreso e
padroneggiato completamente. Inoltre a causa della variabilità del
comportamento dei compilatori nel maneggiare le funzioni più avanzate
del linguaggio, i programmatori C++ che scelgono di farne uso si
rivolgono ad un'architettura (processore, sistema operativo e
compilatore) particolare sacrificando la portabilità su altre
piattaforme.
Il C++ fu standardizzato nel 1998 (ISO/IEC 14882:1998 "Information Technology -
Programming Languages - C++", aggiornato nel 2003). Una
nuova versione dello standard (nota informalmente come C++0x) è
in fase di preparazione.
Come il C, anche il C++ ha una libreria standard. Di particolare importanza è la Standard Template Library (STL),
la parte della libreria standard che utilizza i template per
implementare contenitori generici, come vettori, code, array associativi, e così via. La
programmazione ne risulta molto semplificata, al prezzo di un gran
lavoro del compilatore per interpretare i complessi template.
Alcuni compilatori per C++ sono: GCC (disponibile per molte piattaforme
diverse), MinGW
(porting di GCC per Windows) e DJGPP. Oltre a questi ci sono i compilatori
commerciali come VisualC++ e il compilatore di Borland
C++ Builder.
Anche se il C non è un sottoinsieme del C++ nel senso più stretto della
parola, è possibile compilare in C++ molti programmi scritti in C.
In aggiunta al supporto alla programmazione orientata
agli oggetti, il C++ è distinto dal C per il suo supporto alla programmazione
generica e alla metaprogrammazione attraverso l'uso dei template.