Edytujesz „C++”

Z Nonsensopedii, polskiej encyklopedii humoru

Uwaga: Nie jesteś zalogowany. Jeśli wykonasz jakąkolwiek zmianę, Twój adres IP będzie widoczny publicznie. Jeśli zalogujesz się lub utworzysz konto, Twoje zmiany zostaną przypisane do konta, wraz z innymi korzyściami.

Ta edycja może zostać anulowana. Porównaj ukazane poniżej różnice między wersjami, a następnie zapisz zmiany.

Aktualna wersja Twój tekst
Linia 1: Linia 1:
{{programisto}}
{{Programowanie}}
'''C++''' – nowoczesne, wielofunkcyjne rozszerzenie [[C (język programowania)|języka C]]. W odróżnieniu od [[C (język programowania)|C]] opiera się nie na [[funkcja|funkcjach]], lecz na [[obiekt (informatyka)|obiektach]], co w połączeniu z typowymi dla C instrukcjami niskiego poziomu pozwala pisać [[program|programy]] 10E+5 do 10E+10 razy mniej czytelne niż w C.
{{cytat|<syntaxhighlight lang="cpp">long long ago; // in a galaxy far far away</syntaxhighlight>|C++ o [[Gwiezdne wojny|Gwiezdnych wojnach]]}}
Składnia c++ jest, aż tak nieczytelna, że dużo łatwiej domyślić się do czego służy program po jego kodzie binarnym, niż źródle w tzw. cepie.
{{programowanie}}
'''C++''' (z [[język angielski|ang]]. Si Plask Plask) – ezoteryczny, wieloparadygmatowy, wielofunkcyjny, uniwersalny, obiektowy, generyczny, niskopoziomowy, proceduralny, strukturalny, funkcyjny, imperatywny, uogólniony, logiczny, aspektowy, deklaratywny, agentowy, modularny, bezsensowny język programowania będący dla [[C (język programowania)|C]] tym, czym jest [[Nonsensopedia]] dla [[Wikipedia|Wikipedii]] (albo na odwrót). Przez [[noob]]ów programistycznych uważany za język z największymi możliwościami, lecz oni się nie znają, wszystko da się łatwo zakodzić w [[asembler]]ze.


{{stubinf}}
Wersja od M$ najbardziej słynie z błędów kompilacji wbudowanych bibliotek. Zdarzają się również błędy typu:
<code>LNK431**** UNRESOLVED EXTERNAL SYMBOL [...]</code>
Oznaczają one iż taka funkcja w rzeczywistości nie istnieje, została dodana tylko po to aby zwiększyć liczbę wbudowanych funkcji, czyniąc język bardziej pożytecznym.


== Zastosowanie ==
C++ jest uznawane za świetny język dla [[Alfonsi|alfonsów]], gdyż posiada (w najnowszym standardzie) zestaw seksownych funkcji. Oto część z nich:
* <code>stoi</code> – funkcja wywołująca stanie;
* <code>string</code> – klasa do manipulacji stringami;
* <code>wstring</code> – klasa do manipulacji szerokimi stringami (wide string);
* <code>to_string</code> – zaglądanie w stringi;
* <code>to_wstring</code> – zaglądanie w szerokie stringi;
* <code>sprintf</code> – funkcja do ekspresowej kopulacji (najczęściej używana razem ze stoi).

== 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.

=== Przeładowanie operatorów ===
Przeładowanie operatorów służy temu, by „+” (plus) oznaczał odejmowanie, „-” (dywiz) – dzielenie, a „/” (slesz) – wyświetlenie napisu „Hello, world!”. Dzięki temu nikt nie będzie w stanie zorientować się, co dany fragment kodu robi.

<syntaxhighlight lang="cpp">
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" wartosć "2"
a=2;
b=2;
// przypisujemy liczbie "c" wartosć "a+b"
c=a+b;
// wypisujemy wartosć "c" na ekran
std::cout << c << std::endl;
// jak łatwo się domyslić, program wypisuje "0"
}
</syntaxhighlight>

=== Instrukcje preprocesora ===
C++ jak i jego poprzednik zawiera bardzo przydatną, skracającą czas pisania i ułatwiającą zrozumienie języka instrukcję #define.
Przykład zastosowania:

<syntaxhighlight lang="cpp">
#define true false
#define public private
#define p -
#define m +
#define l p 1 m 1 p
#define h l 1 m 1 p 1 m 1 l
#define g h 1 p 1##*##1##/##1 m 1 h 1 m 1 m 1 h
// jak łatwo się domyślić, litera 'g' służy do odejmowania
</syntaxhighlight>

=== 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):

<syntaxhighlight lang="cpp">
#define min(a,b) ((a) > (b) ? (b) : (a))
</syntaxhighlight>

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

<syntaxhighlight lang="cpp">
template <typename typ>
typ min(typ a, typ b)
{
return ((a) > (b) ? (b) : (a));
}
</syntaxhighlight>

=== Znane stwierdzenia ===
# Wszystkie znaki prowadzą do main().
# Od zarania dziejów człowiek utrudnia sobie życie. Można porównać słowa C i C++.
# Każdy człowiek wie, że [[Windows 7]] na [[Delphi]] pisany jest.
# C++ to język obiektowy (i nie tylko), który ma za zadanie dodać nowe wyrażenia do istniejących funkcji.
# Biblioteka. Skąd to się bierze?
# C sprawia, że łatwo jest sobie strzelić w stopę. Z C++ jest to trudniejsze, ale za to w razie czego odstrzelisz sobie całą nogę.
# Jeśli istnieje jakaś szalona koncepcja, ocierająca się o granice absurdu i niewykonalności, to na pewno da się ją zrealizować w C++. Na przykład dzięki szablonom można pisać programy, które nie zawierają ani jednej zmiennej (sic!).

== Zobacz też ==
* [[programowanie obiektowe]]
* [[C (język programowania)]]
* [[C Sharp|C#]]
* [[CCC]]
* [[CMake]]

{{stopka}}
[[Kategoria:Języki programowania]]
[[Kategoria:Języki programowania]]


[[zh:C++]]
[[pt:C mais mais]]
[[el:C++]]
[[en:C++]]
[[es:C--]]
[[fr:C++]]
[[ja:C++]]
[[pt:C++]]
[[ru:Си плюс минус]]
[[zh-tw:C++]]
Cc-white.svg Wszystko, co napiszesz na Nonsensopedii, zgadzasz się udostępnić na licencji cc-by-sa-3.0 i poddać moderacji.
NIE UŻYWAJ BEZ POZWOLENIA MATERIAŁÓW OBJĘTYCH PRAWEM AUTORSKIM!
Anuluj Pomoc w edycji (otwiera się w nowym oknie)