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
1 2 3 4 5 6 7 8 9 |
#include // wstawiamy plik nagłówkowy biblioteki iostream int main() // funkcja main { std::cout << "Hello world!" << std::endl; //wprowadzenie tekstu na ekran } |
Zamiast ciągle wpisywać std:: można na początku programu dopisać using namespace std;, na przykład:
1 2 3 4 5 6 7 8 9 10 11 12 |
#include // wstawiamy plik nagłówkowy biblioteki iostream using namespace std; int main() // funkcja main { cout << "Hello world!" << endl; //wprowadzenie tekstu na ekran } |
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