Język C++ jest językiem programowania „o wielu paradygmatach”, m.in. również obiektowo zorientowanym. Stworzony w latach osiemdziesiątych XX wieku przez Bjarne Stroustrupa. Na język C++ wpływ miały, poza językiem C, jako jego podstawą, przede wszystkim Simula, z której zaczerpnął właściwości obiektowe, a także języki takie, jak Algol, Ada, ML i Clu.

Historia

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ą rzeczą wprowadzoną w C++ w stosunku do C było programowanie obiektowe, później jednak wprowadzono do niego mnóstwo ulepszeń, czyniąc ten język wygodniejszym i bardziej elastycznym od swojego pierwowzoru. Nie od rzeczy jest też wspomnieć, że niektóre zmiany w standardzie języka C były w większości zainspirowane językiem C++ (np. słowo const).

Nazwa języka została zaproponowana przez 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”.

Pierwsze kompilatory języka C++, podobnie jak Cfront, były wyłącznie translatorami na język C. Kompilatory takie dostępne są i dziś, ale niestety nie oferują one wszystkich właściwości języka C++. Pierwszym kompilatorem natywnym (produkującym od razu kod asemblerowy) dla języka C++ był g++ z pakietu GCC, którego pierwszym autorem był Michael Tiemann, założyciel Cygnus Solutions.

Przykładowy program

Zamiast ciągle wpisywać std:: można na początku programu dopisać using namespace std;, na przykład:

Nowe cechy języka C++

Niektóre z nich trafiły do języka C, najpierw nieoficjalnie, później zaś zostały ustandaryzowane w C99.

  • Klasy wraz z innymi elementami języków zorientowanych obiektowo takimi jak: dziedziczenie, metody wirtualne
  • Dodatkowe ulepszenia klas, konstruktory, destruktory (język C++ był pierwszym językiem w którym użyto nazwy „konstruktor” w tym właśnie znaczeniu i pierwszym językiem, który posiadał destruktory)
  • Szablony (wzorce) klas i funkcji
  • Obsługa wyjątków
  • Deklaracje zmiennych jako instrukcje (w ANSI C wszystkie zmienne lokalne funkcji musiały być zadeklarowane przed pierwszą jej instrukcją)
  • Dynamiczna inicjalizacja zmiennych globalnych i lokalnych zmiennych statycznych (tzn. mogły być inicjalizowane wynikiem wywołanej funkcji)
  • Przestrzenie nazw
  • Referencje
  • Operatory new i delete
  • Operator zasięgu (::) (w ANSI C nie istnieje możliwość odwołania się do zmiennej globalnej o tej samej nazwie, co zmienna lokalna)
  • Dynamiczna kontrola typów RTTI
  • Przeciążanie funkcji
  • Przeciążanie operatorów
  • Wskaźniki do składowych (pól i metod)
  • Jednolinijkowe komentarze (//), pochodzące z języka B (również C99)
  • Funkcje rozwijalne (inline) (również C99)
  • Nowy typ bool i stałe true i false (również C99)
  • „Szeroki” typ znakowy, wchar_t (również C89) wraz ze wszystkimi zależnościami
  • operatory rzutowania: static_cast, dynamic_cast, reinterpret_cast i const_cast

źródło wikipedia.pl