Logo języka | |
| Pojawienie się |
1983 |
|---|---|
| Paradygmat |
wieloparadygmatowy (proceduralny, funkcyjny, obiektowy, uogólniony, modularny) |
| Typowanie | |
| Implementacje |
Borland C++, Clang, GCC, VC++ |
| Aktualna wersja stabilna |
C++23 |
| Twórca | |
| Platforma sprzętowa | |
| Platforma systemowa | |
| Strona internetowa | |
C++ – język programowania ogólnego przeznaczenia, zaprojektowany przez Bjarne'a Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych i silną statyczną kontrolę typów. Zachowanie zgodności z językiem C na poziomie kodu źródłowego pozostaje jednym z podstawowych celów projektowych kolejnych standardów języka.
Umożliwia abstrakcję danych oraz stosowanie kilku paradygmatów programowania: proceduralnego, obiektowego i generycznego, a także funkcyjnego i modularnego. Charakteryzuje się wysoką wydajnością kodu wynikowego, bezpośrednim dostępem do zasobów sprzętowych i funkcji systemowych, łatwością tworzenia i korzystania z bibliotek (napisanych w C++, C lub innych językach), niezależnością od konkretnej platformy sprzętowej lub systemowej (co gwarantuje wysoką przenośność kodów źródłowych) oraz niewielkim środowiskiem uruchomieniowym. Podstawowym obszarem jego zastosowań są aplikacje i systemy operacyjne.
W latach 90. XX wieku język C++ zdobył pozycję jednego z najpopularniejszych języków programowania ogólnego przeznaczenia. Według ankiety z 2015 roku liczba programistów C++ wynosi około 4,4 miliona.
Projekt języka C++ usiłuje zachować możliwie jak największą zgodność (na poziomie kodu źródłowego) z językiem C. Zgodność pomiędzy obydwoma językami nie zawsze była całkowita, ale jak dotąd ewentualne różnice były w praktyce nieistotne. Większym problemem związanym ze zgodnością była niekompatybilność kompilatorów języka C++ w zakresie obsługiwanej składni – przez wiele lat programy napisane pod jednym nie działały pod innym. Biblioteki C++ związane z interfejsami systemów nie są przenośne poza ich obręb, co wynika z faktu, że takie interfejsy są specyficzne dla danego systemu i nie dotyczy to wyłącznie C++.
Większość użytecznych programów w C++ wymaga stosowania bibliotek niestandardowych. Są one łatwo dostępne w Sieci zarówno jako produkty własnościowe, jak i jako FLOSS. Programy napisane w C++ mogą korzystać również z zasobów bibliotek języka C.
Język C++ jest standaryzowany przez ISO. Pierwszą wersję, C++98, opublikowano w 1998 jako ISO/IEC 14882:1998. Następnie kilkukrotnie standard aktualizowano: C++03, C++11 (opracowany już w 2009 jako C++0x, jednak opublikowany dopiero w 2011), C++14 oraz C++17. Ostatnia, najnowsza z wersji standardu, nazywana C++20, opublikowana została w grudniu 2020 jako ISO/IEC 14882:2020.
| Rok | Standard C++ | Nazwa nieoficjalna |
|---|---|---|
| 1998 | ISO/IEC 14882:1998 | C++98 |
| 2003 | ISO/IEC 14882:2003 | C++03 |
| 2011 | ISO/IEC 14882:2011 | C++11, C++0x |
| 2014 | ISO/IEC 14882:2014 | C++14, C++1y |
| 2017 | ISO/IEC 14882:2017 | C++17, C++1z |
| 2020 | ISO/IEC 14882:2020 | C++20, C++2a |
| 2024 | ISO/IEC 14882:2024 | C++23, C++2b |
Język C++ nie jest własnością żadnej osoby, instytucji czy korporacji.
export).
Język C++ został stworzony w latach osiemdziesiątych XX wieku (pierwsza wersja pojawiła się w 1979 r.) przez Bjarne'a Stroustrupa jako obiektowe rozszerzenie języka C. Poza językiem C na kształt języka C++ miały wpływ takie języki, jak Simula (z której zaczerpnął właściwości obiektowe) oraz Algol, Ada, ML i CLU.
Początkowo język C++ był dostępny w takim standardzie, w jakim opracowano ostatnią wersję kompilatora Cfront (tłumaczący C++ na C), później opublikowano pierwszy nieformalny standard zwany ARM (Annotated Reference Manual), który sporządzili Bjarne Stroustrup i Margaret Ellis. Standard języka C++ powstał w 1998 roku (ISO/IEC 14882:1998 „Information Technology – Programming Languages – C++”). Standard ten zerwał częściowo wsteczną zgodność z ARM w swojej bibliotece standardowej; jedyne, co pozostało w stanie w miarę nienaruszonym to biblioteka iostream.
Początkowo najważniejszą zmianą wprowadzoną w C++ w stosunku do C było programowanie obiektowe, później jednak zaimplementowano wiele innych ulepszeń, mających uczynić ten język wygodniejszym i bardziej elastycznym od swojego pierwowzoru. Niektóre zmiany w standardzie języka C były zainspirowane językiem C++ (np. słowo inline w C99).
Nazwa języka została zaproponowana przez Ricka Mascittiego w 1983 roku, kiedy to po raz pierwszy użyto tego języka poza laboratorium naukowym. Odzwierciedla ona fakt, że język ten jest rozszerzeniem języka C. Wcześniej używano nazwy „C z klasami”. Nazwa języka C++ nawiązuje do faktu bycia „następcą języka C”, przez użycie w niej operatora inkrementacji „++”. Inkrementacja to zwiększenie liczby o 1, w języku C++ do jej wykonania wykorzystywany jest ww. operator; dla przykładu:
zapis:
i = i + 1; // Zmiennej "i" przypisuje jej aktualną wartość, powiększoną o 1.
... jest równoważny
++i; // Również powiększa wartość zmiennej "i" o 1.
// Uwaga! instrukcja i++ także zwiększa wartość zmiennej, po jej użyciu.
Nazwa C++ jest więc symbolicznym stwierdzeniem, iż jest to język C, unowocześniony, o większych możliwościach.
Pierwsze kompilatory języka C++, podobnie jak Cfront, były wyłącznie translatorami na język C. Kompilatory takie dostępne są i dziś. Jednym z nich jest Comeau C++ – jeden z niewielu kompilatorów oferujących pełne wsparcie dla standardu języka. Pierwszym kompilatorem natywnym (produkującym od razu kod asemblerowy) dla języka C++ był g++ z pakietu GCC, pierwszym autorem którego był Michael Tiemann, założyciel Cygnus Solutions.
Poniżej zamieszczono program wyprowadzający na standardowy strumień wyjścia napis „Hello world” (w wersji przedstawianej na stronie internetowej Bjarne'a Stroustrupa):
#include <iostream>
int main()
{
std::cout << "Hello, world!" << std::endl;
}
// zauważmy, że "return 0;" nie jest wymagane w ISO C++
Uwaga: niektóre z poniższych elementów trafiły do standardu języka C z 1999 roku (tzw. C99).
new i deletewiostream, oraz dodatkowe pliki nagłówkowe, np. wstring)