C++ (wym. /ˌsiːˌplʌsˈplʌs/) - jeden z najpopularniejszych języków programowania, zaprojektowany przez Bjarne Stroustrupa, przez wielu programistów uważany za niskopoziomowy, wywodzący się bezpośrednio z języka C, wzbogacony o mechanizmy obiektowe.
Historia[]
względem języka C.
Charakterystyka[]
Zalety[]
- Język kompilowany - pracuje z dużą szybkością, a ilość wierszy nie ma znaczenia.
- Obsługuje ASM - umożliwia częściowe operowanie na urządzeniach hardware.
- Kompatybilny z językiem programowania C - aplikacje napisane w starszej wersji języka będą działać pod rozwiniętą wersją C++.
- Obsługuje dużą ilość bibliotek - ma wiele możliwości w przeciwieństwie do konkurencyjnych środowisk.
Wady[]
- Brak modułów - programista potrzebuje dodatkowych idiomów, aby stworzyć coś co jest często wbudowane w innych językach.
- Wiele form przekazywania pobiektów podczas, gdy inny język na przykład Java wykorzystuje tylko jeden.
- Brak przenośnego interfejsu bibliotek - kiedy programista implementuje API musi korzystać z programowania strukturalnego.
- Język niskopoziomowy - bardziej złożony i operujący bliżej sprzętu.
Nowe cechy języka C++ względem języka ANSI C z 1989 roku[]
Uwaga: niektóre z poniższych elementów trafiły do standardu C99
- Możliwość programowania obiektowego:
- Mechanizmy hermetyzacji:
- funkcje składowe
- sekcje prywatne, chronione i publiczne
- zaprzyjaźnianie funkcji oraz klas
- Klasy, jako rozszerzenie struktury o funkcje składowe, enkapsulację, dziedziczenie i polimorfizm
- Obiekty, będące instancjami klas
- Dziedziczenie (w tym dziedziczenie wielobazowe)
- Metody wirtualne dostarczające polimorfizm
- Konstruktory (służące również do niejawnej konwersji; później dodano również możliwość zakazania niejawnej konwersji przez konstruktor za pomocą
explicit
) - Destruktory, czyli funkcja wywoływana niejawnie przed (ściśle ustalonym) usunięciem Obiekt|obiektu
- Operatory
new
idelete
- Dynamiczna kontrola typów (RTTI), czyli dynamiczne (sprawdzane w czasie wykonywania) rzutowanie pomiędzy typami spokrewnionych klas, oraz określanie typu w czasie wykonywania (operatory
dynamic_cast
oraztypeid
) - Słowo kluczowe
this
(wskaźnik na obiekt, u którego wywoływana jest metoda) - Wskaźniki do pól i metod
- Metody i pola statyczne
- Mechanizmy hermetyzacji:
- Udogodnienia związane z programowaniem generycznym:
- Szablony klas i funkcji
- Włączenie do biblioteki standardowej generycznej biblioteki STL
- Obsługa wyjątków:
- Deklaracja wychwytywania wyjątków:
try ... catch
- Deklaracja wywoływania wyjątku:
throw
- Deklaracja ograniczania wyjątków:
throw(...)
(określanie, jakie wyjątki mogą być propagowane z danej funkcji / metody)
- Deklaracja wychwytywania wyjątków:
- Zmiany ogólnej natury:
- Przestrzenie nazw i operator zasięgu: ::
- Traktowanie definicji zmiennych i obiektów jak zwykłych instrukcji
- Dynamiczna inicjalizacja zmiennych globalnych i statycznych lokalnych zmiennych (tzn. mogą być inicjowane wartością funkcji)
- Możliwość uzyskania dostępu do przesłoniętej zmiennej globalnej za pomocą operatora zasięgu
- Referencje
- Słowa kluczowe
const
(również C99),volatile
(również C99) imutable
(usuwanie modyfikatoraconst
z podanego pola, jeśli taki został nadany całemu obiektowi) - Przeciążanie funkcji
- Przeciążanie operatorów
- Funkcje rozwijalne:
inline
(również C99) - Typ logiczny
bool
i stałetrue (prawda)
ifalse (fałsz)
(również C99, z tym że w C++ są to słowa kluczowe) - „Szerszy” typ znakowy,
wchar_t
(również C99) wraz ze wszystkimi zależnościami (np. klasy strumieniowe, w tymwiostream
, oraz dodatkowe pliki nagłówkowe, np.wstring
) - Operatory precyzyjnego rzutowania:
dynamic_cast
(rzutowanie tylko pomiędzy typami, z uwzględnieniem hierarchii klas),reinterpret_cast
(rzutowanie wymuszone tylko pomiędzy typami) iconst_cast
(rzutowanie zmieniające modyfikatory typuconst
ivolatile
)
Przykładowy program[]
Poniższy program wyprowadza napis "Hello, World!" na standardowe wyjście:
// Włączenie pliku nagłówkowego biblioteki (biblioteka strumieni wejścia-wyjścia)
#include <iostream>
// Włączenie przestrzeni nazw std (standardowa przestrzeń nazw, zawierająca podstawowe funkcje, klasy i obiekty jak: cout, cin, cerr, endl, string itd.)
using namespace std;
// Definicja funkcji o nazwie main (funkcja główna, od niej rozpoczyna się działanie programu)
int main() {
// Wyświetlenie napisu "Hello, World!" na standardowe wyjście
cout << "Hello, World!" << endl;
// Zakończenie funkcji ze zwróceniem wartości 0
return 0;
}
Zastosowanie[]
Język C++ nadal cieszy się dużą popularnością i jest często wykorzystywany w:
- sterownikach sprzętowych,
- aplikacjach,
- grach komputerowych
Ta strona zawiera treści z Wikipedii.
Oryginalny artykuł był umieszczony pod nazwą C++. Lista autorów jest dostępna w historii strony. Tak jak w Wikii, tekst z Wikipedii jest udostępniony na licencji CC-BY-SA. |