[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
m Ostatnia zmiana zniszczyła kod, który był poprawny. Bez std program nie zadziała. Przywracam kod "Hello worlda" taki, jaki był poprzednio.
Znacznik: Edytor kodu źródłowego 2017
m kat., WP:SK
Linia 7:
| typowanie = [[Typowanie statyczne|statyczne]]
| implementacje = [[C++ Builder|Borland C++]], [[Clang]], [[GNU Compiler Collection|GCC]], [[Microsoft Visual C++|VC++]]
| pochodne =
| wersja = C++20<br />(ISO/IEC 14882:2020)
| wersja testowa = C++23
Linia 29:
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 [[Wolne i otwarte oprogramowanie|FLOSS]]. Programy napisane w C++ mogą korzystać również z zasobów bibliotek języka C.
 
Język C++ jest [[Standard|standaryzowany]] przez [[Międzynarodowa Organizacja Normalizacyjna|ISO]]. Pierwszą wersję, [[C++98]], opublikowano w 1998 jako ISO/IEC 14882:1998<ref>{{Cytuj stronę | url = http://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?ics1=35&ics2=60&ics3=&csnumber=25845 | tytuł = ISO/IEC 14882:1998 | język = en | data dostępu = 2017-12-18 | opublikowany = International Organization for Standardization}}</ref>. Następnie kilkukrotnie standard aktualizowano: [[C++03]]<ref>{{Cytuj stronę | url = http://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?ics1=35&ics2=60&ics3=&csnumber=38110 | tytuł = ISO/IEC 14882:2003 | język = en | data dostępu = 2017-12-18 | opublikowany = International Organization for Standardization}}</ref>, [[C++11]]<ref>{{Cytuj stronę | url = http://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?ics1=35&ics2=60&ics3=&csnumber=50372 | tytuł = ISO/IEC 14882:2011 | język = en | data dostępu = 2017-12-18 | opublikowany = International Organization for Standardization}}</ref><ref>{{Cytuj stronę | url = http://www2.research.att.com/~bs/C++0xFAQ.html | tytuł = C++11 FAQ | nazwisko = Stroustrup | imię = Bjarne | data = 2012-02-23 | język = en | data dostępu = 2015-12-08 | archiwum = https://web.archive.org/web/20120624062540/http://www2.research.att.com/~bs/C++0xFAQ.html | zarchiwizowano = 2012-06-24 }}</ref><ref>{{Cytuj stronę | url = http://gcc.gnu.org/gcc-4.4/changes.html | tytuł = GCC 4.4 Release Series Changes, New Features, and Fixes | opublikowany = [[Free Software Foundation]] | język =en | data dostępu = 2015-04-16}}</ref> (opracowany już w 2009 jako C++0x, jednak opublikowany dopiero w 2011)<ref>{{Cytuj stronę | url = https://herbsutter.com/2011/08/12/we-have-an-international-standard-c0x-is-unanimously-approved/ | tytuł = We have an international standard: C++0x is unanimously approved | język = en | data dostępu = 2017-12-18 | imię = Herb | nazwisko = Sutter | opublikowany = Sutter's Mill}}</ref>, [[C++14]]<ref>{{Cytuj stronę | url = http://www.iso.org/iso/home/store/catalogue_ics/catalogue_detail_ics.htm?csnumber=64029&ICS1=35&ICS2=60 | tytuł = ISO/IEC 14882:2014 | język = en | data dostępu = 2017-12-18 | opublikowany = International Organization for Standardization}}</ref> oraz [[C++17]]. Ostatnia, najnowsza z wersji standardu, nazywana [[C++17|C++20]], opublikowana została w grudniu 2020 jako ISO/IEC 14882:2020<ref name="iso_c++17">{{Cytuj stronę|url=https://www.iso.org/standard/79358.html|tytuł=ISO/IEC 14882:2020|język=en|data dostępu=2020-12-18|opublikowany=International Organization for Standardization|autor=}}</ref>.
{| class="wikitable"
|+Standardy języka C++
Linia 38:
|-
!scope="row"| 1998
| | ISO/IEC 14882:1998<ref name="isocpp1998">{{cytuj stronę |tytuł=ISO/IEC 14882:1998|opublikowany=International Organization for Standardization|url=https://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?ics1=35&ics2=60&ics3=&csnumber=25845 }}</ref> || C++98
|-
!scope="row"| 2003
| | ISO/IEC 14882:2003<ref name="isocpp2003">{{cytuj stronę |tytuł=ISO/IEC 14882:2003|opublikowany=International Organization for Standardization|url=https://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?ics1=35&ics2=60&ics3=&csnumber=38110 }}</ref> || [[C++03]]
|-
!scope="row"| 2011
| | ISO/IEC 14882:2011<ref name="isocpp2011">{{cytuj stronę |tytuł=ISO/IEC 14882:2011|opublikowany=International Organization for Standardization|url=https://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?ics1=35&ics2=60&ics3=&csnumber=50372 }}</ref> || [[C++11]], C++0x
|-
!scope="row"| 2014
| | ISO/IEC 14882:2014<ref name="isocpp2014">{{cytuj stronę |tytuł=ISO/IEC 14882:2014|opublikowany=International Organization for Standardization|url=https://www.iso.org/iso/home/store/catalogue_ics/catalogue_detail_ics.htm?csnumber=64029&ICS1=35&ICS2=60 }}</ref> || [[C++14]], C++1y
|-
!scope="row"| 2017
Linia 62:
* Język C++ zakłada statyczną kontrolę typów; posiada też elementy dynamicznej kontroli typów.
* Język C++ umożliwia bezpośrednie zarządzanie wolną pamięcią.
* Projekt języka zakłada, że żadna nowa (względem języka C) cecha języka C++ nie może mieć negatywnego wpływu na szybkość działania programu lub zapotrzebowanie na pamięć operacyjną. Dzięki temu dobrze napisany program w C++ jest z reguły co najmniej równie szybki, jak jego odpowiednik napisany w C; co więcej, dzięki możliwości zastosowania algorytmów generycznych w wielu przypadkach C++ jest wyraźnie szybszy od C (np. podczas sortowania)<ref name="c">{{Cytuj stronę | url = http://www.luna.umcs.lublin.pl/download/programowanie_c++.pdf | tytuł = Programowanie w C++ | autor = Grzegorz M. Wójcik | rok = 2009 | archiwum = https://web.archive.org/web/20090617135519/http://www.luna.umcs.lublin.pl/download/programowanie_c++.pdf | zarchiwizowano = 2009-06-17 | data dostępu = 2015-04-16 }}</ref>.
* Język C++ ze względu na bardzo rozbudowaną składnię oraz surowe wymogi w zakresie wydajności kodu stanowi duże wyzwanie dla twórców kompilatorów<ref name="c" />.
* Do dziś (2020) żaden popularny kompilator nie jest w pełni zgodny z obowiązującym standardem języka, aczkolwiek ewentualne niezgodności dotyczą już tylko drugorzędnych cech języka (np. implementacji słowa kluczowego <code>export</code>)<ref>{{Cytuj stronę | url = http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1426.pdf | tytuł = Why We Can’t Afford Export | nazwisko = Sutter | imię = Herb | nazwisko2 = Plum | imię2 = Tom | data = 2003-03-03 | język = en | data dostępu = 2015-04-16 | archiwum = https://web.archive.org/web/20110607081340/http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1426.pdf | zarchiwizowano = 2011-06-07 }}</ref><ref>{{Cytuj stronę | url = https://gcc.gnu.org/onlinedocs/gcc-4.4.0/gcc/Standards.html | tytuł = Language Standards Supported by GCC | praca = [https://gcc.gnu.org/onlinedocs/gcc-4.4.0/gcc/ Using the GNU Compiler Collection (GCC)] | opublikowany = [[Free Software Foundation]] | język = en | data dostępu = 2015-04-16}}</ref>.
 
== Historia ==
[[FilePlik:BjarneStroustrup.jpg|thumb|Bjarne Stroustrup, twórca języka C++, w&nbsp;swoim biurze AT&T New Jersey (ok. 2000&nbsp;r.)]]
Język C++ został stworzony w [[Lata 80. XX wieku|latach osiemdziesiątych]] [[XX wiek]]u (pierwsza wersja pojawiła się w 1979 r.) przez [[Bjarne Stroustrup]]a 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|Algol]], [[Ada (język programowania)|Ada]], [[Meta Language|ML]] i [[CLU]].
 
Linia 92:
 
== Przykładowy program ==
Poniżej zamieszczono program wyprowadzający na standardowy strumień wyjścia napis „[[Hello world]]” (w wersji przedstawianej na stronie internetowej [[Bjarne Stroustrup]]a)<ref>{{Cytuj stronę | url = https://www.stroustrup.com/hello_world.c | tytuł = The Hello world program. | nazwisko = Stroustrup | imię = Bjarne | data dostępu = 2021-01-17 }}</ref>:
<!--
================================================================================
Linia 160:
** Deklaracja ograniczania wyjątków: '''throw(...)''' (określanie, jakie wyjątki mogą być propagowane z danej funkcji/metody)
* Zmiany natury ogólnej:
** [[Przestrzeń nazw|Przestrzenie nazw]] i operator zasięgu '''::'''
** Traktowanie definicji [[Zmienna (informatyka)|zmiennych]] i obiektów jak zwykłych instrukcji
** Dynamiczna inicjalizacja zmiennych [[Zmienna globalna|globalnych]] i [[Zmienna (informatyka)|lokalnych]] zmiennych [[Zmienna statyczna|statycznych]] (tzn. mogą być inicjalizowane wartością funkcji)
Linia 208:
{{Kontrola autorytatywna}}
 
[[Kategoria:C++| ]]