C++
C++ on ohjelmointikieli, jonka Bjarne Stroustrup kehitti 1980-luvulla. Kieli on kehitetty C-kielestä lisäämällä siihen muun muassa olio-ohjelmointiin ja geneerisyyteen liittyviä ominaisuuksia.
C++-kielen standardi ISO/IEC 14882:1998 vahvistettiin vuonna 1998, C++11 (ent. C++0x) vuonna 2011, C++14 (ISO/IEC 14882:2014) vuonna 2014. Uusin standardi ISO/IEC 14882:2017 (C++17) on valmistunut vuonna 2017.
C++ sisältää muun muassa luokat, virtuaalisen moniperintätuen, mallit (templates) ja poikkeukset. C++ perustuu C-kieleen siten, ettei kieltä ole suunniteltu uudelleen, vaan uusia ominaisuuksia on lisätty. Kieli on moniparadigmainen, mahdollistaen muun muassa proseduraalisen-, olio- ja funktionaalisen ohjelmoinnin.
Muistihallinta on suunniteltu "RAII" () konseptille, joka soveltuu mm. poikkeuksien kanssa käyttöön.
C++:lla on kirjoitettu suuri osa maailman käyttöjärjestelmä-, laiteohjain-, ohjelmisto-, sulautettu järjestelmä-, verkko-, ja peliohjelmista, esim. Microsoftin ja Adobe Systemsin ohjelmat.
C++:n kehitys alkaa vuodesta 1979 jolloin Bjarne Stroustrup aloitti kehittämisen.
Alkuvaiheessa kieli oli oliolaajennus C-kieleen ja tunnettiin nimellä "C with Classes".
C++ ISO/IEC standardista on julkaistu seuraavat versiot:
Virallisten standardien lisäksi ISO-työryhmällä on eräitä "teknisiä määrittelyjä", jotka eivät ole vielä varsinaisen standardin tasolla ja jotka ovat vielä muuttuvia.
Esimerkkinä N4514, joka määrittelee transaktiopohjaisen muistin käsittelyn tuen C++-kieleen. Osa ohjelmointikielen kääntäjistä tarjoaa "kokeellisen" tuen kuten esimerkiksi GCC.
ISO:n julkaisemia määrittelyjä:
Virallinen standardi on saatavissa ISO:lta korvausta vastaan, mutta viimeisin työskentelyluonnos on saatavilla internetistä ilmaiseksi. Virallisessa standardissa on korjattu kirjoitusvirheitä ja lisätty selvennyksiä.
Monet C:llä kirjoitetuista ohjelmista ovat myös kelvollista C++:aa. Eivät kuitenkaan kaikki, muun muassa C:n kehittymisen aikana luotujen uusien varattujen sanojen ja tarkemman tyyppitarkistuksen vuoksi.
C:stä poiketen C++ tukee useaa nimiavaruutta.
C++ sisältää Standard Template Library (STL) standardikirjaston.
Standard Template Library sisältää yleisiä ohjelmoijien tarvitsemia säiliöitä (containers), algoritmeja, funktioita ja iteraattoreita. STL toteutus seuraa usein kääntäjän mukana, mutta myös riippumattomia toteutuksia on olemassa.
C++:n standardikirjasto sisältää STL:n lisäksi myös joukon C-kielen standardikirjastoa vastaavista toiminnoista yhteensopivuuden vuoksi.
C++ tukee yksinkertaista perintää, abstrakteja "pure virtual" luokkia, moniperintää sekä virtuaalista moniperintää.
Tämä on yleisesti käytetty esimerkkiohjelma C++-oppaissa. Se tulostaa näytölle tekstin ”Hello, world!” Kuten C:ssä, ohjelma alkaa komennoilla esikääntäjälle, tässä kirjaston liittämisellä #include-käskyllä. Lohkot rajataan aaltosuluilla {}, ja main-funktio suoritetaan aina ensimmäisenä. Ohjaamalla tekstin cout-olioon «-operaattorilla teksti tulostuu stdout-virtaan (näytölle).
C++:n kielioppi on samantapaista kuin C:n ja Javan. Lauseet päättyvät puolipisteeseen ";", eikä välilyöntejä tai muuta tyhjää tilaa oteta huomioon. Lohkot ympäröidään aaltosulkeilla "{ }", kommentit aloitetaan "/*" -merkinnällä ja päätetään "*/" -merkinnällä. Yhden rivin kommentti merkitään kahdella vinoviivalla "//". Kaikki standardikirjaston luokat, funktiot ja globaalit muuttujat ovat std-nimiavaruudessa.
C++ tukee useaa nimiavaruutta. 
C++17 lisäsi tuen sisäkkäisille nimiavaruuksille, joka mahdollistaa codice_3 käytön aiemman codice_4 sijaan.
Lisäksi kieli tukee nimiavaruuden aliasointia:
C++ tukee myös anonyymejä nimiavaruuksia.
Aaltosuluilla merkittävät lohkot luovat oman nimiavaruuden kaltaisen "näkyvyysalueen" ():
Ajonaikainen tyyppitieto () on ominaisuus, jolla välitetyn olion tyyppi voidaan tunnistaa ohjelman ajonaikana.
Tämä mahdollistaa mm. perityn olion tyypin mukaisen käsittelyn.
C++ tukee poikkeuksia ja pinon ("stack") siivoamista (kuten näkyvyydeltä eli "scopesta" poistuessa).
Poikkeuskäsittelijä valitaan määrittelyjärjestyksessä ja tyypin mukaan.
"Ellipsis" (kolme pistettä) voi vastaanottaa tyypit, joille ei ole muuta käsittelijää.
Konseptia, jossa resurssit varataan konstruktorissa ja vapautetaan destruktorissa kutsutaan nimellä . 
Konseptin ovat kehittäneet Bjarne Stroustrup ja Andrew Koenig vuosina 1984–89 ja se on esitelty ensimmäisenä C++ kielessä.
RAII-muistihallintakonsepti voidaan esittää seuraavan triviaalin esimerkin avulla:
Esimerkissä resurssit vapautetaan kutsumalla olion destruktoria:
Olion luominen tekee tarvittavan varauksen ja alustuksen, jotka olion destruktori vapauttaa. Menetelmä on poikkeusturvallinen ja ei tarvitse roskienkeräystä tueksi.
"Template"-mallit mahdollistavat geneerisen ohjelmoinnin, jossa samoja algoritmeja voidaan käyttää uusille tietotyypeille ilman uutta ohjelmointia.
RAII-esimerkin ohjelmakoodi voidaan muokata geneerisemmäksi käyttämällä "template"-määrittelyä.