(Go: >> BACK << -|- >> HOME <<)

C++

język programowania ogólnego przeznaczenia
To jest stara wersja tej strony, edytowana przez 84.135.126.23 (dyskusja) o 13:52, 10 lut 2006. Może się ona znacząco różnić od aktualnej wersji.

Język C++ jest wieloparadygmatowym językiem programowania, 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 inline w C99).

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ś. Jednym z nich jest Comeau C++ - jeden z niewielu kompilatorów oferujących pełne wsparcie dla standardu języka. 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ładowe programy

Najmniejszy możliwy program wygląda tak:

int main() {}

Jest to już w pełni poprawny program w języku C++, który nie wykonuje żadnego działania. Poniższy, za to, wyświetla napis "Hello world!":

#include <iostream> // wstawiamy plik nagłówkowy biblioteki iostream
#include <ostream>  // definicja operatora <<

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:

#include <iostream> // wstawiamy plik nagłówkowy biblioteki iostream
#include <ostream>
using namespace std;

int main() // funkcja main
{
   cout << "Hello world!" << endl; //wprowadzenie tekstu na ekran
}

Prosty kalkulator:

#include "cstdlib"
#include "iostream"
#include "ostream"

using namespace std;

int main(int argc, char *argv[])  //argc - ilość argumentów podanych przy uruchomieniu,
{                                 //argv[] - tablica argumentów
    float a, b, wynik;
    int dzialanie;
    
    cout << "Wybierz dzialanie :" << endl << "1. Dodawanie" << endl << "2. Odejmowanie" << endl
         << "3. Mnozenie" << endl << "4. Dzielenie" << endl << endl << "Wybierz inna liczbe aby wyjsc"
         << endl << endl;
    cin >> dzialanie;
    
    switch (dzialanie){  //instrukcja warunkowa sprawdzająca wartość zmiennej w nawiasach
           case 1:
                cout << endl << "Podaj skladniki :" << endl;
                cin >> a >> b;
                wynik = a + b;
                break;
           case 2:
                cout << endl << "Podaj odjemna i odjemnik :" << endl;
                cin >> a >> b;
                wynik = a - b;
                break;
           case 3:
                cout << endl << "Podaj czynniki :" << endl;
                cin >> a >> b;
                wynik = a * b;
                break;
           case 4:
                cout << endl << "Podaj dzielna i dzielnik :" << endl;
                cin >> a >> b;
                wynik = a / b;
                break;
           default :     //dowolny, niewyszczególniony przedtem przypadek
                cout << endl << "Koniec programu." << endl;
                wynik = 0;
    }
    
    cout << endl << "Wynik wynosi " << wynik << endl << endl;
    
    return EXIT_SUCCESS;  //Wysłanie do systemu kodu o pomyślnym zakończeniu programu.
}

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 (wiostream i reszta, nagłówek <wctype>, wstring)
  • operatory rzutowania: static_cast, dynamic_cast, reinterpret_cast i const_cast

Zobacz też

Linki zewnętrzne