C++: Różnice pomiędzy wersjami

[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
m MalarzBOT: poprawiam link tożsamy z tekstem linka
Linia 12:
| twórca = [[Bjarne Stroustrup]]
| licencja =
| platforma = [[wieloplatformowośćWieloplatformowość|wieloplatformowy]]
| system = [[wieloplatformowośćWieloplatformowość|wieloplatformowy]]
| wikibooks = C++
| www = http://isocpp.org
Linia 21:
 
Umożliwia [[Abstrakcja (programowanie)|abstrakcję]] danych oraz stosowanie kilku paradygmatów programowania: [[Programowanie proceduralne|proceduralnego]], [[Programowanie obiektowe|obiektowego]] i [[Programowanie uogólnione|generycznego]].
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 [[Biblioteka programistyczna|bibliotek]] (napisanych w C++, [[C (język programowania)|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ą [[Oprogramowanie użytkowe|aplikacje]] i [[systemSystem operacyjny|systemy operacyjne]].
 
C++ został zaprojektowany przez [[Bjarne Stroustrup]]a 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.
Linia 27:
W latach 90. XX wieku język C++ zdobył pozycję jednego z najpopularniejszych języków programowania ogólnego przeznaczenia. Na początku XXI wieku liczbę programistów języka C++ szacowano na około 3 miliony<ref>{{Cytuj stronę | url = http://www.stroustrup.com/bs_faq.html | tytuł = Bjarne Stroustrup's FAQ | nazwisko = Stroustrup | imię = Bjarne | język = en | data dostępu = 2015-04-16}}</ref>.
 
Język C++ jest [[standardStandard|standaryzowany]] przez [[Międzynarodowa Organizacja Normalizacyjna|ISO]]. Ostatnia, najnowsza z wersji standardu, nazywana [[C++17]], opublikowana została w grudniu 2017 jako ISO/IEC 14882:2017<ref name=isocpp2017>{{cytuj stronę | url = https://www.iso.org/standard/68564.html | tytuł = ISO/IEC 14882:2017 | język = en | data dostępu = 2017-12-18 | opublikowany = International Organization for Standardization}}</ref>. Pierwszą wersję, [[C++98]], opublikowano w 1998 jako ISO/IEC 14882:1998<ref name=isocpp1998>{{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 name=isocpp2003>{{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 name=isocpp2011>{{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 = http://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>, oraz [[C++14]] <ref name=isocpp2014>{{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>. Obecnie planowana jest już kolejna wersja standardu, na razie roboczo nazywana [[C++20]]<ref>{{cytuj stronę | url = https://herbsutter.com/2016/06/30/trip-report-summer-iso-c-standards-meeting-oulu/ | tytuł = Trip report: Summer ISO C++ standards meeting (Oulu) | język = en | data dostępu = 2017-12-18 | opublikowany = Sutter's Mill}}</ref>.
 
Linia 52:
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. [[Inline (programowanie)|słowo ''inline'']]'' w [[C99]]).
 
Nazwa języka została zaproponowana przez [[Rick Mascitti|Ricka Mascitti]] 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 [[Inkrementacja|inkrementacji]] "++". [[Inkrementacja]] to zwiększenie liczby o 1, w języku C++ do jej wykonania wykorzystywany jest ww. operator; dla przykładu:
Linia 80:
===============================================================================================
-->
Poniższy program wyprowadza na standardowe urządzenie wyjścia napis "[[Hello world|"Hello world"]]":
<source lang="cpp">
#include <iostream>
Linia 124:
** [[Obiekt (programowanie obiektowe)|Obiekty]], będące instancjami klas
** [[Dziedziczenie (programowanie)|Dziedziczenie]] (w tym dziedziczenie wielobazowe)
** [[metodaMetoda wirtualna|Metody wirtualne]] dostarczające polimorfizm
** [[Konstruktor (programowanie obiektowe)|Konstruktory]] (służące również do niejawnej konwersji; później dodano również możliwość zakazania niejawnej konwersji przez konstruktor za pomocą '''explicit''')
** [[Destruktor]]y, czyli funkcja wywoływana niejawnie przed (ściśle ustalonym) usunięciem obiektu
Linia 142:
** [[Przestrzeń nazw|Przestrzenie nazw]] i operator zasięgu '''::'''
** Traktowanie definicji [[Zmienna (informatyka)|zmiennych]] i obiektów jak zwykłych instrukcji
** Dynamiczna inicjalizacja zmiennych [[zmiennaZmienna globalna|globalnych]] i [[Zmienna (informatyka)|lokalnych]] zmiennych [[zmiennaZmienna statyczna|statycznych]] (tzn. mogą być inicjalizowane wartością funkcji)
** Możliwość uzyskania dostępu do przesłoniętej zmiennej globalnej za pomocą operatora '''::'''
** [[Referencja (informatyka)|Referencje]]