C++

Z Nonsensopedii, polskiej encyklopedii humoru
Ten artykuł jest częścią cyklu naukowego języki komputerowe.

Języki programowania:


Inne języki komputerowe:


edytuj ten szablon

C++ – wieloparadygmatowy, wielofunkcyjny, uniwersalny, obiektowy, generyczny, niskopoziomowy, bezsensowny język programowania będący dla C tym, czym jest Nonsensopedia dla Wikipedii (albo na odwrót).

Nowości

W porównaniu z C, język posiada wiele nowych możliwości, które czynią składnię jeszcze bardziej zagmatwaną i trudniejszą do zrozumienia.

Klasy

W związku z wszechobecną modą na programownaie obiektowe, w C++ wprowadzono klasy, które są dokładnie tym samym, co znane z C struktury. Jedyną różnicą jest to, że pola i metody struktur są domyślnie publiczne, a pola i metody klas są domyślnie prywatne, ale i tak nikt nie wie, co to znaczy.

Przeciążanie operatorów

Przeciążanie operatorów – jak sama nazwa wskazuje, jest to rodzaj polimorfizmu pozwalający zdefiniować rożne zachowanie operatora w zależności od przyjętych operandów.

Mówiąc po ludzku: przeciążanie operatorów jest wtedy, gdzy „+” (plus) oznacza odejmowanie, „-” (minus) – dzielenie, a „/” (slesz) – wyświetlenie napisu „Hello, world!”. Dzięki temu nikt nie będzie w stanie zorientować się, co dany fragment kodu robi.

int operator+(int a, int b) // plus oznacza odejmowanie
{
    return a-b;
} 
int operator-(int a, int b) // minus oznacza dzielenie
{
    return a/b;
} 
int operator/(int a, int b) // slesz powoduje wypisanie "Hello world!"
                            // i zawsze daje wynik 7
{
    std::cout << "Hello, world!" << std::endl;
    return 7;
}
int main()
{
   int a,b,c;
   // przypisujemy liczbom "a" i "b" wartosc "2"
   a=2;  
   b=2;  
   // przypisujemy liczbie "c" wartosc "a+b"
   c=a+b;  
   // wypisujemy wartosc "c" na ekran
   std::cout << c << std::endl; 
   // jak latwo sie domyslic, program wypisuje "0"
}

Szablony

Twórca C++, pragnąc wyzwolić programistów od złego Doktora Preprocesora, stworzył coś, co nazwał systemem szablonów. Szablony umożliwiają napisanie tego, co dawniej zajmowało jedną linię, w pięciu liniach.

Funkcja „min” w stylu C (makro preprocesora):

#define min(a,b) ((a) > (b) ? (b) : (a))

Funkcja „min” w stylu C++ (szablon funkcji):

template <typename typ>
typ min(typ a, typ b)
{
    return ((a) > (b) ? (b) : (a));
}

Niestety, nie udało się wyeliminować preprocesora z C++, bo wciąż jest on potrzebny do łączenia plików źródłowych (#include).

Szablon:Stubinf