Opus magnum C++. Programowanie w języku C++. Wydanie III poprawione (komplet)
- Autor:
- Jerzy Grębosz
- Wydawnictwo:
- Helion
- Wydawnictwo:
- Helion
- Ocena:
- 5.4/6 Opinie: 33
- Stron:
- 1648
- Druk:
- oprawa miękka
- Dostępny format:
-
PDF
Opis
książki
:
Opus magnum C++. Programowanie w języku C++. Wydanie III poprawione (komplet)
Jedno C i same plusy!
Dawno, dawno temu, w głębokich latach osiemdziesiątych ubiegłego wieku pewien duński informatyk zainspirowany językiem C opracował jeden z najważniejszych, najbardziej elastycznych i do dziś niezastąpionych języków programowania — C++. Dziś ten język jest wykorzystywany do tworzenia gier komputerowych, obliczeń naukowych, technicznych, w medycynie, przemyśle i bankowości. NASA posługuje się nim w naziemnej kontroli lotów. Duża część oprogramowania Międzynarodowej Stacji Kosmicznej została napisana w tym języku. Nawet w marsjańskim łaziku Curiosity pracuje program w C++, który analizuje obraz z kamer i planuje dalszą trasę.
Autor tej książki — wybitny specjalista pracujący nad wieloma znaczącymi projektami we francuskich, niemieckich i włoskich instytutach fizyki jądrowej, znany czytelnikom m.in. z genialnej Symfonii C++ — postawił sobie za cel napisanie nowej, przekrojowej książki o tym języku, która w prostym, wręcz przyjacielskim stylu wprowadza czytelnika w fascynujący świat programowania zorientowanego obiektowo. Zobacz, jak potężny jest dzisiaj C++ 11.
Jeżeli chcesz nauczyć się tego języka w łatwy, pogodny, przyjazny sposób, ta książka jest właśnie dla Ciebie.
Dzięki tej książce poznasz:
- Proste i złożone typy danych
- Instrukcje sterujące
- Funkcje i operatory
- Wskaźniki
- Klasy i dziedziczenie
- Obsługę wyjątków
- Wyrażenia lambda
- Operacje wejścia-wyjścia
- Projektowanie orientowane obiektowo
- Szablony
Wybrane bestsellery
-
Promocja
Internet rzeczy nadal ewoluuje - i staje się coraz powszechniejszy, a to może być zachętą do tego, by poznać go bliżej. Internet rzeczy. Podstawy programowania aplikacji i serwerów sieciowych w językach C/C++, MicroPython i Lua na urządzeniach IoT ESP8266, ESP32 i Arduino może się okazać świetną propozycją na początek przygody z IoT. Książka kompleksowo objaśnia specyfikę wybranych urządzeń i uczy, jak je programować w sposób na tyle przystępny, że wystarczy przeciętna znajomość obsługi komputera, by zacząć tworzyć pierwsze projekty. Treść została zilustrowana przykładowymi kodami źródłowymi, co zdecydowanie ułatwia stawianie pierwszych kroków.- PDF + ePub + Mobi
- Druk 49 pkt
(39,90 zł najniższa cena z 30 dni)
49.50 zł
99.00 zł (-50%) -
Promocja
Autor tego zbioru zadań jest programistą i nauczycielem. To prawdziwy pasjonat programowania ― w tym w języku C++ ― które traktuje jak przedłużenie ludzkiej mowy. Uważa, że praktycznie na wszystko, co robimy w życiu, można spojrzeć jak na wykonywanie funkcji i algorytmów, które opisujemy za pomocą słów. Od razu widać związek między podejściem humanistycznym i informatycznym! Dlatego też nauka programowania w żadnym stopniu nie jest opanowywaniem jakiejś specjalnej wiedzy tylko dla wtajemniczonych. To po prostu utrwalanie tego, co już wiemy i umiemy, tyle że w sposób logiczny i uporządkowany.- PDF + ePub + Mobi
- Druk 18 pkt
(14,90 zł najniższa cena z 30 dni)
18.50 zł
37.00 zł (-50%) -
This book will guide you in setting up REAPER to suit your needs, while also teaching you techniques and procedures used by professional audio engineers. You'll learn the principles of using equalizers, effects, and automation in mixing.
W przygotowaniu
Powiadom mnie, gdy książka będzie dostępna -
This book helps you to harness the power of Unreal Engine 5's geometry tools to create stunning 3D environments, props, and more with expert insights from Francisco Barros, who shares his secrets for crafting professional-grade assets.
W przygotowaniu
Powiadom mnie, gdy książka będzie dostępna -
Promocja
Getting up to speed with the latest C++ features Key Features Learning about the newest features of C++23 and C++20. Understanding how to make your code cleaner, faster, and easier. Enhancing the safety, readability, and performance of your code. Description C++ continues to remain relevant despite the advent of many new modern languages. This bo- ePub + Mobi 80 pkt
(38,90 zł najniższa cena z 30 dni)
80.91 zł
89.90 zł (-10%) -
Promocja
Description In today's rapidly evolving technological landscape, staying competitive in the field of software development requires a deep understanding of fundamental programming concepts and the ability to solve complex problems efficiently. This book aims to be your comprehensive guide to acing technical interviews in C, C++, data structures, and- ePub + Mobi 80 pkt
(38,90 zł najniższa cena z 30 dni)
80.91 zł
89.90 zł (-10%) -
Promocja
Description C++ is a powerful language essential for logic building and competitive programming. It demands a solid grasp of data structures and algorithms to excel in coding challenges. This book is the perfect guide to help you confidently navigate this path. This book is meticulously crafted to make the fundamentals of C++ programming accessible- ePub + Mobi 80 pkt
(38,90 zł najniższa cena z 30 dni)
80.91 zł
89.90 zł (-10%) -
Promocja
Discover cutting-edge CMake strategies in this updated edition. Learn advanced project structuring, tool integration, and cross-platform builds to optimize your software development workflow.- PDF + ePub 107 pkt
(29,90 zł najniższa cena z 30 dni)
107.10 zł
119.00 zł (-10%) -
Promocja
Unlock the power of C++ and enhance your algorithmic thinking with this course. From understanding basic operations to mastering complex structures, this course provides a structured pathway for new programmers. Start your coding journey today!- PDF + ePub 35 pkt
(19,90 zł najniższa cena z 30 dni)
35.91 zł
39.90 zł (-10%) -
Kiedy myślimy o takich aplikacjach jak Maya, VirtualBox, Telegram, Spotify, Dropbox czy Google Earth, być może nie od razu znajdujemy wspólny mianownik. A jest nim framework Qt, używany przez wszystkie te znane marki. Qt powstał z myślą o programowaniu interfejsów graficznych GUI, a ze względu na wydajność, stabilność i unikatowy model programowania oparty na sygnałach i slotach jest idealnym wyborem, gdy chodzi o tworzenie złożonych systemów. Dlatego też framework Qt ma wyjątkowo szerokie zastosowanie w aplikacjach zarówno konsumenckich, jak i przemysłowych, o krytycznym znaczeniu. W ramach naszego szkolenia poznasz też zaprojektowane specjalnie dla niego środowisko Qt Creator. To IDE oferuje wsparcie dla C++ i QML, łatwy dostęp do bibliotek i widżetów Qt, a także zarządzanie pakietami QMake i CMake. Ponadto dzięki zaawansowanemu edytorowi UI szybko wykonasz prototyp swojego wymarzonego interfejsu metodą drag-and-drop! Postaw na naukę Qt i twórz nowoczesne, wieloplatformowe aplikacje z funkcjonalną warstwą GUI.
- Videokurs 149 pkt
O autorze książki
Dr hab. Jerzy Grębosz – autor książek o języku C++, fizyk, popularyzator, podróżnik-antropolog. Pracownik Instytutu Fizyki Jądrowej imienia Henryka Niewodniczańskiego Polskiej Akademii Nauk (IFJ PAN). Popularyzator nauki – wszechświat wyjaśnia w sposób kreatywny i niekonwencjonalny, między innymi poprzez widowiska artystyczne, animacje komputerowe, czy też autorskie spektakle i filmy popularnonaukowe (nagradzane na przeglądach i festiwalach filmów naukowych i edukacyjnych, wykorzystywane do nauki w szkołach). Autor publikacji z zakresu fizyki jądrowej i języka C++. Jego książki – „Symfonia C++ Standard” oraz „Pasja C++” – są podręcznikami na wielu polskich uniwersytetach. Z zamiłowania podróżnik – antropolog. W swoich podróżach na wyspy Oceanii poznaje pierwotne plemiona i ich kulturę.
Więcej informacji: https://www.ifj.edu.pl/~grebosz/
Jerzy Grębosz - pozostałe książki
-
Promocja
C++ to jeden z najpopularniejszych i najpotężniejszych języków programowania. Stanowi punkt wyjścia dla wielu innych języków, które odziedziczyły po nim składnię i liczne możliwości, dzięki czemu można śmiało stwierdzić, że znajomość C++ otwiera drzwi do świata nowoczesnego programowania i jest podstawą na wymagającym rynku pracy w branży informatycznej. Czasy się zmieniają, lecz to C++ jest wciąż wybierany wszędzie tam, gdzie liczą się możliwości, elastyczność, wydajność i stabilność.- Druk 34 pkt
(32,90 zł najniższa cena z 30 dni)
34.50 zł
69.00 zł (-50%) -
Promocja
Autor tej książki — wybitny specjalista pracujący nad wieloma znaczącymi projektami we francuskich, niemieckich i włoskich instytutach fizyki jądrowej, znany czytelnikom m.in. z genialnej Symfonii C++ — postawił sobie za cel napisanie nowej, przekrojowej książki o tym języku, która w prostym, wręcz przyjacielskim stylu wprowadza czytelnika w fascynujący świat programowania zorientowanego obiektowo. Zobacz, jak potężny jest dzisiaj C++ 11.- Druk 99 pkt
(39,90 zł najniższa cena z 30 dni)
99.50 zł
199.00 zł (-50%) -
Promocja
C++ to jeden z najpopularniejszych i najpotężniejszych języków programowania. Stanowi punkt wyjścia dla wielu innych języków, które odziedziczyły po nim składnię i liczne możliwości, dzięki czemu można śmiało stwierdzić, że znajomość C++ otwiera drzwi do świata nowoczesnego programowania i jest podstawą na wymagającym rynku pracy w branży informatycznej. Czasy się zmieniają, lecz to C++ jest wciąż wybierany wszędzie tam, gdzie liczą się możliwości, elastyczność, wydajność i stabilność.- Druk 34 pkt
(29,90 zł najniższa cena z 30 dni)
34.50 zł
69.00 zł (-50%) -
Promocja
Autor tej książki — wybitny specjalista pracujący nad wieloma znaczącymi projektami we francuskich, niemieckich i włoskich instytutach fizyki jądrowej, znany czytelnikom m.in. z genialnej Symfonii C++ — postawił sobie za cel napisanie nowej, przekrojowej książki o tym języku, która w prostym, wręcz przyjacielskim stylu wprowadza czytelnika w fascynujący świat programowania zorientowanego obiektowo. Zobacz, jak potężny jest dzisiaj C++ 11.- Druk 74 pkt
(39,90 zł najniższa cena z 30 dni)
74.50 zł
149.00 zł (-50%)
Ebooka "Opus magnum C++. Programowanie w języku C++. Wydanie III poprawione (komplet)" przeczytasz na:
-
czytnikach Inkbook, Kindle, Pocketbook, Onyx Boox i innych
-
systemach Windows, MacOS i innych
-
systemach Windows, Android, iOS, HarmonyOS
-
na dowolnych urządzeniach i aplikacjach obsługujących formaty: PDF, EPub, Mobi
Masz pytania? Zajrzyj do zakładki Pomoc »
Audiobooka "Opus magnum C++. Programowanie w języku C++. Wydanie III poprawione (komplet)" posłuchasz:
-
w aplikacji Ebookpoint na Android, iOS, HarmonyOs
-
na systemach Windows, MacOS i innych
-
na dowolonych urządzeniach i aplikacjach obsługujących format MP3 (pliki spakowane w ZIP)
Masz pytania? Zajrzyj do zakładki Pomoc »
Kurs Video "Opus magnum C++. Programowanie w języku C++. Wydanie III poprawione (komplet)" zobaczysz:
-
w aplikacjach Ebookpoint i Videopoint na Android, iOS, HarmonyOs
-
na systemach Windows, MacOS i innych z dostępem do najnowszej wersji Twojej przeglądarki internetowej
Szczegóły książki
- ISBN Książki drukowanej:
- 978-83-289-1131-4, 9788328911314
- Data wydania książki drukowanej :
- 2024-06-05
- ISBN Ebooka:
- 978-83-289-1813-9, 9788328918139
- Data wydania ebooka :
- 2024-06-05 Data wydania ebooka często jest dniem wprowadzenia tytułu do sprzedaży i może nie być równoznaczna z datą wydania książki papierowej. Dodatkowe informacje możesz znaleźć w darmowym fragmencie. Jeśli masz wątpliwości skontaktuj się z nami sklep@ebookpoint.pl.
- Format:
- 163x230
- Numer z katalogu:
- 223649
- Rozmiar pliku Pdf:
- 43.6MB
- Pobierz przykładowy rozdział PDF »
- Przykłady na ftp » 161kB
Spis treści książki
-
0 Proszę tego nie czytać! 1
- 0.1 Zaprzyjaźnijmy się! 1
- 1.1 Pierwszy program 8
- 1.2 Drugi program 13
- 1.3 Ćwiczenia 18
- 2.1 Prawda - fałsz, czyli o warunkach 20
- 2.1.1 Wyrażenie logiczne 20
- 2.1.2 Zmienna logiczna bool w roli warunku 21
- 2.1.3 Stare dobre sposoby z dawnego C++ 21
- 2.2 Instrukcja warunkowa if 22
- 2.3 Pętla while 26
- 2.4 Pętla do...while... 27
- 2.5 Pętla for 28
- 2.6 Instrukcja switch 31
- 2.7 Co wybrać: switch czy if...else? 33
- 2.8 Instrukcja break 36
- 2.9 Instrukcja goto 37
- 2.10 Instrukcja continue 39
- 2.11 Klamry w instrukcjach sterujących 40
- 2.12 Ćwiczenia 41
- 3.1 Deklaracje typu 44
- 3.2 Systematyka typów z języka C++ 45
- 3.3 Typy fundamentalne 46
- 3.3.1 Typy przeznaczone do pracy z liczbami całkowitymi 46
- 3.3.2 Typy do przechowywania znaków alfanumerycznych 47
- 3.3.3 Typy reprezentujące liczby zmiennoprzecinkowe 47
- 3.3.4 bool - typ do reprezentacji obiektów logicznych 48
- 3.3.5 Kwestia dokładności 49
- 3.3.6 Jak poznać limity (ograniczenia) typów wbudowanych 51
- 3.4 Typy o precyzyjnie żądanej szerokości 55
- 3.5 InicjaLIZAcja, czyli nadanie wartości w momencie narodzin 59
- 3.6 Definiowanie obiektów "w biegu" 60
- 3.7 Stałe dosłowne 62
- 3.7.1 Stałe dosłowne typu bool 63
- 3.7.2 Stałe będące liczbami całkowitymi 63
- 3.7.3 Stałe reprezentujące liczby zmiennoprzecinkowe 66
- 3.7.4 Stała dosłowna nullptr - dla wskaźników 67
- 3.7.5 Stałe znakowe 68
- 3.7.6 Stałe tekstowe, napisy, albo po prostu stringi 71
- 3.7.7 Surowe stałe tekstowe (napisy, stringi) 73
- 3.8 Typy złożone 76
- 3.9 Typ void 77
- 3.10 Zakres ważności nazwy obiektu a czas życia obiektu 78
- 3.10.1 Zakres: lokalny 78
- 3.10.2 Zakres: instrukcja 79
- 3.10.3 Zakres: blok funkcji 79
- 3.10.4 Zakres: obszar pliku 80
- 3.10.5 Zakres: obszar klasy 80
- 3.10.6 Zakres określony przez przestrzeń nazw 80
- 3.11 Zasłanianie nazw 85
- 3.12 Specyfikator (przydomek) const 87
- 3.13 Specyfikator (przydomek) constexpr 88
- 3.14 Obiekty register 92
- 3.15 Specyfikator volatile 93
- 3.16 using oraz typedef - tworzenie dodatkowej nazwy typu 94
- 3.17 Typy wyliczeniowe enum 97
- 3.17.1 Dawne zwykłe enum a nowe zakresowe enum class 103
- 3.17.2 Kilka uwag dla wtajemniczonych 106
- 3.18 auto, czyli automatyczne rozpoznawanie typu definiowanego obiektu 106
- 3.19 decltype - operator do określania typu zadanego wyrażenia 110
- 3.20 Inicjalizacja z pustą klamą { }, czyli wartością domniemaną 111
- 3.21 Przydomek alignas - adresy równe i równiejsze 114
- 3.22 Ćwiczenia 115
- 4.1 Operatory arytmetyczne 120
- 4.1.1 Operator %, czyli reszta z dzielenia (modulo) 121
- 4.1.2 Jednoargumentowe operatory + i - 122
- 4.1.3 Operatory inkrementacji i dekrementacji 122
- 4.1.4 Operator przypisania = 124
- 4.2 Operatory logiczne 125
- 4.2.1 Operatory relacji 125
- 4.2.2 Operatory sumy logicznej || oraz iloczynu logicznego && 126
- 4.2.3 Wykrzyknik !, czyli operator negacji 128
- 4.3 Operatory bitowe 128
- 4.3.1 Przesuniecie w lewo << 129
- 4.3.2 Przesunięcie w prawo >> 130
- 4.3.3 Bitowe operatory sumy, iloczynu, negacji, różnicy symetrycznej 131
- 4.4 Różnica między operatorami logicznymi a operatorami bitowymi 131
- 4.5 Pozostałe operatory przypisania 133
- 4.6 Operator uzyskiwania adresu (operator &) 135
- 4.7 Wyrażenie warunkowe 135
- 4.8 Operator sizeof 137
- 4.9 Operator noexcept 138
- 4.10 Deklaracja static_assert 138
- 4.11 Operator alignof informujący o najkorzystniejszym wyrównaniu adresu 141
- 4.12 Operatory rzutowania 142
- 4.12.1 Rzutowanie według tradycyjnych (niezalecanych) sposobów 142
- 4.12.2 Rzutowanie za pomoca nowych operatorów rzutowania 144
- 4.12.3 Operator static_cast 144
- 4.12.4 Operator const_cast 147
- 4.12.5 Operator dynamic_cast 148
- 4.12.6 Operator reinterpret_cast 148
- 4.13 Operator: przecinek 149
- 4.14 Priorytety operatorów 150
- 4.15 Łączność operatorów 152
- 4.16 Ćwiczenia 153
- 5.1 Typ std::string do pracy z tekstami 157
- 5.2 Typ vector - długi rząd obiektów 162
- 5.3 Zakresowe for 170
- 5.4 Ćwiczenia 173
- 6.1 Definicja funkcji i jej wywołanie 175
- 6.2 Deklaracja funkcji 176
- 6.3 Funkcja czesto wywołuje inna funkcję 178
- 6.4 Zwracanie przez funkcję rezultatu 178
- 6.4.1 Obiekt tworzony za pomocą auto, a inicjalizowany rezultatem funkcji 180
- 6.4.2 O zwracaniu (lub niezwracaniu) rezultatu przez funkcję main 181
- 6.5 Nowy, alternatywny sposób deklaracji funkcji 182
- 6.6 Stos 184
- 6.7 Przesyłanie argumentów do funkcji przez wartość 185
- 6.8 Przesyłanie argumentów przez referencję 186
- 6.9 Pożyteczne określenia: l-wartość i r-wartość 189
- 6.10 Referencje do l-wartości i referencje do r-wartości jako argumenty funkcji 191
- 6.10.1 Który sposób przesyłania argumentu do funkcji wybrać? 198
- 6.11 Kiedy deklaracja funkcji nie jest konieczna? 199
- 6.12 Argumenty domniemane 200
- 6.12.1 Ciekawostki na temat argumentów domniemanych 203
- 6.13 Nienazwany argument 208
- 6.14 Funkcje inline (w linii) 209
- 6.15 Przypomnienie o zakresie ważności nazw deklarowanych wewnatrz funkcji 213
- 6.16 Wybór zakresu ważności nazwy i czasu życia obiektu 213
- 6.16.1 Obiekty globalne 213
- 6.16.2 Obiekty automatyczne 214
- 6.16.3 Obiekty lokalne statyczne 215
- 6.17 Funkcje w programie składającym się z kilku plików 219
- 6.17.1 Nazwy statyczne globalne 223
- 6.18 Funkcja zwracająca rezultat będący referencją l-wartości 224
- 6.19 Funkcje rekurencyjne 229
- 6.20 Funkcje biblioteczne 238
- 6.21 Funkcje constexpr 241
- 6.21.1 Wymogi, które musi spełniać funkcja constexpr (w standardzie C++11) 243
- 6.21.2 Przykład pokazujący aspekty funkcji constexpr 244
- 6.21.3 Argumenty funkcji constexpr będące referencjami 253
- 6.22 Definiowanie referencji przy użyciu słowa auto 254
- 6.22.1 Gdy inicjalizatorem jest wywołanie funkcji zwracającej referencję 261
- 6.23 Ćwiczenia 264
- 7.1 Dyrektywa pusta # 270
- 7.2 Dyrektywa #define 270
- 7.3 Dyrektywa #undef 272
- 7.4 Makrodefinicje 273
- 7.5 Sklejacz nazw argumentów, czyli operator ## 275
- 7.6 Parametr aktualny makrodefinicji - w postaci tekstu 276
- 7.7 Dyrektywy kompilacji warunkowej 276
- 7.8 Dyrektywa #error 280
- 7.9 Dyrektywa #line 281
- 7.10 Wstawianie treści innych plików do tekstu kompilowanego właśnie pliku 281
- 7.11 Dyrektywy zależne od implementacji 283
- 7.12 Nazwy predefiniowane 283
- 7.13 Ćwiczenia 286
- 8.1 Co to jest tablica 289
- 8.2 Elementy tablicy 290
- 8.3 Inicjalizacja tablic 292
- 8.4 Przekazywanie tablicy do funkcji 293
- 8.5 Przykład z tablicą elementów typu enum 297
- 8.6 Tablice znakowe 299
- 8.7 Ćwiczenia 307
- 9.1 Tablica tablic 312
- 9.2 Przykład programu pracującego z tablicą dwuwymiarową 314
- 9.3 Gdzie w pamięci jest dany element tablicy 316
- 9.4 Typ wyrażeń związanych z tablicą wielowymiarową 316
- 9.5 Przesyłanie tablic wielowymiarowych do funkcji 318
- 9.6 Ćwiczenia 320
- 10.1 Najpierw przypomnienie istotnych tu cech klasy vector 322
- 10.2 Jak za pomoca klasy vector budować tablice wielowymiarowe 323
- 10.3 Funkcja pokazująca zawartość wektora dwuwymiarowego 324
- 10.4 Definicja dwuwymiarowego wektora - pustego 326
- 10.5 Definicja wektora dwuwymiarowego z listą inicjalizatorów 327
- 10.6 Wektor dwuwymiarowy o żądanych rozmiarach, choć bez inicjalizacji 328
- 10.7 Zmiana rozmiaru wektora 2D funkcją resize 329
- 10.8 Zmiany rozmiaru wektora 2D funkcjami push_back, pop_back 330
- 10.9 Zmniejszanie rozmiaru wektora dwuwymiarowego funkcją pop_back 333
- 10.10 Funkcje mogące modyfikować treść wektora 2D 333
- 10.11 Wysłanie rzędu wektora 2D do funkcji pracującej z wektorem 1D 335
- 10.12 Całośc przykładu definiującego wektory dwuwymiarowe 336
- 10.13 Po co są dwuwymiarowe wektory nieprostokątne 336
- 10.14 Wektory trójwymiarowe 338
- 10.15 Sposoby definicji wektora 3D o ustalonych rozmiarach 341
- 10.16 Nadawanie pustemu wektorowi 3D wymaganych rozmiarów 345
- 10.16.1 Zmiana rozmiarów wektora 3D funkcjami resize 345
- 10.16.2 Zmiana rozmiarów wektora 3D funkcjami push_back 347
- 10.17 Trójwymiarowe wektory 3D - nieprostopadłościenne 348
- 10.18 Ćwiczenia 352
- 11.1 Wskaźniki mogą bardzo ułatwić życie 354
- 11.2 Definiowanie wskaźników 356
- 11.3 Praca ze wskaźnikiem 357
- 11.4 Definiowanie wskaźnika z użyciem auto 360
- 11.5 Wyrażenie *wskaźnik jest l-wartością 361
- 11.6 Operator rzutowania reinterpret_cast a wskaźniki 361
- 11.7 Wskaźniki typu void* 364
- 11.8 Strzał na oślep - wskaźnik zawsze na coś wskazuje 366
- 11.8.1 Wskaźnik wolno porównać z adresem zero - nullptr 368
- 11.9 Ćwiczenia 368
- 12.1 Zastosowanie wskaźników wobec tablic 370
- 12.1.1 Ćwiczenia z mechaniki ruchu wskaźnika 370
- 12.1.2 Użycie wskaźnika w pracy z tablicą 374
- 12.1.3 Arytmetyka wskaźników 378
- 12.1.4 Porównywanie wskaźników 380
- 12.2 Zastosowanie wskaźników w argumentach funkcji 381
- 12.2.1 Jeszcze raz o przesyłaniu tablic do funkcji 385
- 12.2.2 Odbieranie tablicy jako wskaźnika 385
- 12.2.3 Argument formalny będący wskaźnikiem do obiektu const 387
- 12.3 Zastosowanie wskaźników przy dostępie do konkretnych komórek pamięci 390
- 12.4 Rezerwacja obszarów pamięci 391
- 12.4.1 Operatory new i delete albo Oratorium Stworzenie Świata 392
- 12.4.2 Operator new a słowo kluczowe auto 396
- 12.4.3 Inicjalizacja obiektu tworzonego operatorem new 396
- 12.4.4 Operatorem new możemy także tworzyć obiekty stałe 397
- 12.4.5 Dynamiczna alokacja tablicy 398
- 12.4.6 Tablice wielowymiarowe tworzone operatorem new 399
- 12.4.7 Umiejscawiający operator new 402
- 12.4.8 "Przychodzimy, odchodzimy - cichuteńko, na..." 407
- 12.4.9 Zapas pamięci to nie studnia bez dna 409
- 12.4.10 Nowy sposób powiadomienia: rzucenie wyjątku std::bad_alloc 410
- 12.4.11 Funkcja set_new_handler 412
- 12.5 Ćwiczenia 414
- 13.1 Stałe wskaźniki 418
- 13.2 Stałe wskaźniki a wskaźniki do stałych 419
- 13.2.1 Wierzch i głębia 420
- 13.3 Definiowanie wskaźnika z użyciem auto 421
- 13.3.1 Symbol zastępczy auto a opuszczanie gwiazdki przy definiowaniu wskaźnika 424
- 13.4 Sposoby ustawiania wskaźników 426
- 13.5 Parada kłamców, czyli o rzutowaniu const_cast 428
- 13.6 Tablice wskaźników 432
- 13.7 Wariacje na temat C-stringów 434
- 13.8 Argumenty z linii wywołania programu 441
- 13.9 Ćwiczenia 444
- 14.1 Wskaźnik, który może wskazywać na funkcję 446
- 14.2 Ćwiczenia z definiowania wskaźników do funkcji 449
- 14.3 Wskaźnik do funkcji jako argument innej funkcji 455
- 14.4 Tablica wskaźników do funkcji 459
- 14.5 Użycie deklaracji using i typedef w świecie wskaźników 464
- 14.5.1 Alias przydatny w argumencie funkcji 464
- 14.5.2 Alias przydatny w definicji tablicy wskaźników do funkcji 465
- 14.6 Użycie auto lub decltype do automatycznego rozpoznania potrzebnego typu 466
- 14.7 Ćwiczenia 468
- 15.1 Co oznacza przeładowanie 470
- 15.2 Przeładowanie od kuchni 473
- 15.3 Jak możemy przeładowywać, a jak się nie da? 473
- 15.4 Czy przeładowanie nazw funkcji jest techniką orientowaną obiektowo? 476
- 15.5 Linkowanie z modułami z innych języków 477
- 15.6 Przeładowanie a zakres ważności deklaracji funkcji 478
- 15.7 Rozważania o identyczności lub odmienności typów argumentów 480
- 15.7.1 Przeładowanie a typy tworzone z using lub typedef oraz typy enum 481
- 15.7.2 Tablica a wskaźnik 481
- 15.7.3 Pewne szczegóły o tablicach wielowymiarowych 482
- 15.7.4 Przeładowanie a referencja 484
- 15.7.5 Identyczność typów: T, const T, volatile T 485
- 15.7.6 Przeładowanie a typy: T*, volatile T*, const T* 486
- 15.7.7 Przeładowanie a typy: T&, volatile T&, const T& 487
- 15.8 Adres funkcji przeładowanej 488
- 15.8.1 Zwrot rezultatu będącego adresem funkcji przeładowanej 490
- 15.9 Kulisy dopasowywania argumentów do funkcji przeładowanych 492
- 15.10 Etapy dopasowania 493
- 15.10.1 Etap 1. Dopasowanie dokładne, bo konwersja niepotrzebna 493
- 15.10.2 Etap 1a. Dopasowanie dokładne, bo z tzw. trywialną konwersją 494
- 15.10.3 Etap 2. Dopasowanie z awansem (z promocją) 495
- 15.10.4 Etap 3. Próba dopasowania za pomocą konwersji standardowych 497
- 15.10.5 Etap 4. Dopasowanie z użyciem konwersji zdefiniowanych przez użytkownika 499
- 15.10.6 Etap 5. Dopasowanie do funkcji z wielokropkiem 499
- 15.11 Wskaźników nie dopasowuje się inaczej niż dosłownie 499
- 15.12 Dopasowywanie wywołań z kilkoma argumentami 500
- 15.13 Ćwiczenia 501
- 16.1 Typy definiowane przez użytkownika 504
- 16.2 Składniki klasy 506
- 16.3 Składnik będący obiektem 507
- 16.4 Kapsułowanie 508
- 16.5 Ukrywanie informacji 509
- 16.6 Klasa a obiekt 512
- 16.7 Wartości wstępne w składnikach nowych obiektów. Inicjalizacja "w klasie" 514
- 16.8 Funkcje składowe 517
- 16.8.1 Posługiwanie się funkcjami składowymi 517
- 16.8.2 Definiowanie funkcji składowych 518
- 16.9 Jak to właściwie jest? (this) 523
- 16.10 Odwołanie się do publicznych danych składowych obiektu 525
- 16.11 Zasłanianie nazw 526
- 16.11.1 Nie sięgaj z klasy do obiektów globalnych 529
- 16.12 Przeładowanie i zasłonięcie równocześnie 530
- 16.13 Nowa klasa? Osobny plik! 530
- 16.13.1 Poznajmy praktyczną realizację wieloplikowego programu 533
- 16.13.2 Zasada umieszczania dyrektywy using namespace w plikach 545
- 16.14 Przesyłanie do funkcji argumentów będących obiektami 545
- 16.14.1 Przesyłanie obiektu przez wartość 545
- 16.14.2 Przesyłanie przez referencję 547
- 16.15 Konstruktor - pierwsza wzmianka 548
- 16.16 Destruktor - pierwsza wzmianka 553
- 16.17 Składnik statyczny 557
- 16.17.1 Do czego może się przydać składnik statyczny w klasie? 566
- 16.18 Statyczna funkcja składowa 566
- 16.18.1 Deklaracja składnika statycznego mająca inicjalizację "w klasie" 571
- 16.19 Funkcje składowe typu const oraz volatile 577
- 16.19.1 Przeładowanie a funkcje składowe const i volatile 581
- 16.20 Struktura 581
- 16.21 Klasa będąca agregatem. Klasa bez konstruktora 582
- 16.22 Funkcje składowe z przydomkiem constexpr 584
- 16.23 Specyfikator mutable 591
- 16.24 Bardziej rozbudowany przykład zastosowania klasy 592
- 16.25 Ćwiczenia 603
- 17.1 Rozwiązanie przechowywania tekstów musiało się znaleźć 609
- 17.2 Klasa std::string to przecież nasz stary znajomy 611
- 17.3 Definiowanie obiektów klasy string 612
- 17.4 Użycie operatorów =, +, += w pracy ze stringami 617
- 17.5 Pojemność, rozmiar i długość stringu 618
- 17.5.1 Bliźniacze funkcje size() i length() 618
- 17.5.2 Funkcja składowa empty 619
- 17.5.3 Funkcja składowa max_size 619
- 17.5.4 Funkcja składowa capacity 619
- 17.5.5 Funkcje składowe reserve i shrink_to_fit 621
- 17.5.6 resize - zmiana długości stringu "na siłę" 622
- 17.5.7 Funkcja składowa clear 624
- 17.6 Użycie operatora [ ] oraz funkcji at 624
- 17.6.1 Działanie operatora [ ] 625
- 17.6.2 Działanie funkcji składowej at 626
- 17.6.3 Przebieganie po wszystkich literach stringu zakresowym for 629
- 17.7 Funkcje składowe front i back 629
- 17.8 Jak umieścić w tekście liczbę? 630
- 17.9 Jak wczytać liczbę ze stringu? 632
- 17.10 Praca z fragmentem stringu, czyli z substringiem 635
- 17.11 Funkcja składowa substr 636
- 17.12 Szukanie zadanego substringu w obiekcie klasy string - funkcje find 637
- 17.13 Szukanie rozpoczynane od końca stringu 640
- 17.14 Szukanie w stringu jednego ze znaków z zadanego zestawu 641
- 17.15 Usuwanie znaków ze stringu - erase i pop_back 643
- 17.16 Wstawianie znaków do istniejącego stringu - funkcje insert 644
- 17.17 Zamiana części znaków na inne znaki - replace 646
- 17.18 Zaglądanie do wnętrza obiektu klasy string funkcją data 649
- 17.19 Zawartość obiektu klasy string a C-string 650
- 17.20 W porządku alfabetycznym, czyli porównywanie stringów 653
- 17.20.1 Porównywanie stringów za pomocą funkcji compare 654
- 17.20.2 Porównywanie stringów przy użyciu operatorów ==, !=, <, >, <=, >= 658
- 17.21 Zamiana treści stringu na małe lub wielkie litery 659
- 17.22 Kopiowanie treści obiektu klasy string do tablicy znakowej - funkcja copy 661
- 17.23 Wzajemna zamiana treści dwóch obiektów klasy string - funkcja swap 662
- 17.24 Wczytywanie z klawiatury stringu o nieznanej wcześniej długości - getline 663
- 17.24.1 Pułapka, czyli jak getline może Cię zaskoczyć 666
- 17.25 Iteratory stringu 670
- 17.25.1 Iterator do obiektu stałego 674
- 17.25.2 Funkcje składowe klasy string pracujące z iteratorami 675
- 17.26 Klasa string korzysta z techniki przenoszenia 680
- 17.27 Bryk, czyli "pamięć zewnętrzna" programisty 681
- 17.28 Ćwiczenia 689
- 18.1 Przyjaciele w życiu i w C++ 696
- 18.2 Przykład: dwie klasy deklarują przyjaźń z tą samą funkcją 698
- 18.3 W przyjaźni trzeba pamiętać o kilku sprawach 700
- 18.4 Obdarzenie przyjaźnią funkcji składowej innej klasy 703
- 18.5 Klasy zaprzyjaźnione 705
- 18.6 Konwencja umieszczania deklaracji przyjaźni w klasie 707
- 18.7 Kilka otrzeźwiających słów na zakończenie 707
- 18.8 Ćwiczenia 708
- 19.1 Jak dać znać, że coś się nie udało? 710
- 19.2 Pierwszy prosty przykład 712
- 19.3 Kolejność bloków catch ma znaczenie 714
- 19.4 Który blok catch nadaje się do złapania lecącego wyjątku? 715
- 19.5 Bloki try mogą być zagnieżdżane 717
- 19.6 Obsługa wyjątków w praktycznym programie 720
- 19.7 Specyfikator noexcept i operator noexcept 731
- 19.8 Ćwiczenia 734
- 20.1 Klasa-składnik, czyli gdy w klasie jest zagnieżdżona definicja innej klasy 736
- 20.2 Prawdziwy przykład zagnieżdżenia definicji klasy 743
- 20.3 Lokalna definicja klasy 754
- 20.4 Lokalne nazwy typów 757
- 20.5 Ćwiczenia 758
- 21.1 Konstruktor 760
- 21.1.1 Przykład programu zawierającego klasę z konstruktorami 761
- 21.2 Specyfikator (przydomek) explicit 772
- 21.3 Kiedy i jak wywoływany jest konstruktor 773
- 21.3.1 Konstruowanie obiektów lokalnych 773
- 21.3.2 Konstruowanie obiektów globalnych 774
- 21.3.3 Konstrukcja obiektów tworzonych operatorem new 774
- 21.3.4 Jawne wywołanie konstruktora 775
- 21.3.5 Dalsze sytuacje, gdy pracuje konstruktor 778
- 21.4 Destruktor 778
- 21.4.1 Jawne wywołanie destruktora (ogromnie rzadka sytuacja) 780
- 21.5 Nie rzucajcie wyjątków z destruktorów 780
- 21.6 Konstruktor domniemany 782
- 21.7 Funkcje składowe z przypiskami = default i = delete 783
- 21.8 Konstruktorowa lista inicjalizacyjna składników klasy 785
- 21.8.1 Dla wtajemniczonych: wyjątki rzucane z konstruktorowej listy inicjalizacyjnej 792
- 21.9 Konstruktor delegujący 796
- 21.10 Pomocnicza klasa std::initializer_list - lista inicjalizatorów 803
- 21.10.1 Zastosowania niekonstruktorowe 803
- 21.10.2 Konfuzja: lista inicjalizatorów a lista inicjalizacyjna 812
- 21.10.3 Konstruktor z argumentem będącym klamrową listą inicjalizatorów 813
- 21.11 Konstrukcja obiektu, którego składnikiem jest obiekt innej klasy 818
- 21.12 Konstruktory niepubliczne? 825
- 21.13 Konstruktory constexpr mogą wytwarzać obiekty constexpr 827
- 21.14 Ćwiczenia 837
- 22.1 Konstruktor kopiujący (albo inicjalizator kopiujący) 840
- 22.2 Przykład klasy z konstruktorem kopiującym 841
- 22.3 Kompilatorowi wolno pominąć niepotrzebne kopiowanie 846
- 22.4 Dlaczego przez referencję? 848
- 22.5 Konstruktor kopiujący gwarantujący nietykalność 849
- 22.6 Współodpowiedzialność 850
- 22.7 Konstruktor kopiujący generowany automatycznie 850
- 22.8 Kiedy powinniśmy sami zdefiniować konstruktor kopiujący? 851
- 22.9 Referencja do r-wartości daje zezwolenie na recykling 858
- 22.10 Funkcja std::move, która nie przenosi, a tylko rzutuje 861
- 22.11 Odebrana r-wartość staje się w ciele funkcji l-wartością 863
- 22.12 Konstruktor przenoszący (inicjalizator przenoszący) 865
- 22.12.1 Konstruktor przenoszący generowany przez kompilator 870
- 22.12.2 Inne konstruktory generowane automatycznie 870
- 22.12.3 Zwrot obiektu lokalnego przez wartość? Nie używamy przenoszenia! 871
- 22.13 Tak zwana "semantyka przenoszenia" 872
- 22.14 Nowe pojęcia dla ambitnych: gl-wartość, x-wartość i pr-wartość 872
- 22.15 decltype - operator rozpoznawania typu bardzo wyszukanych wyrażeń 875
- 22.16 Ćwiczenia 880
- 23.1 Definiowanie tablic obiektów i praca z nimi 882
- 23.2 Tablica obiektów definiowana operatorem new 883
- 23.3 Inicjalizacja tablic obiektów 885
- 23.3.1 Inicjalizacja tablicy, której obiekty są agregatami 885
- 23.3.2 Inicjalizacja tablic, których elementy nie są agregatami 888
- 23.4 Wektory obiektów 892
- 23.4.1 Wektor, którego elementami są obiekty klasy bedącej agregatem 894
- 23.4.2 Wektor, którego elementami są obiekty klasy niebędącej agregatem 896
- 23.5 Ćwiczenia 897
- 24.1 Wskaźniki zwykłe - repetytorium 898
- 24.2 Wskaźnik do pokazywania na składnik-daną 899
- 24.2.1 Przykład zastosowania wskaźników do składników klasy 903
- 24.3 Wskaźnik do funkcji składowej 910
- 24.3.1 Przykład zastosowania wskaźników do funkcji składowych 912
- 24.4 Tablica wskaźników do danych składowych klasy 919
- 24.5 Tablica wskaźników do funkcji składowych klasy 920
- 24.5.1 Przykład tablicy/wektora wskaźników do funkcji składowych 921
- 24.6 Wskaźniki do składników statycznych są zwykłe 924
- 24.7 Ćwiczenia 925
- 25.1 Sformułowanie problemu 927
- 25.2 Konstruktory konwertujące 929
- 25.2.1 Kiedy jawnie, kiedy niejawnie 930
- 25.2.2 Przykład konwersji konstruktorem 935
- 25.3 Funkcja konwertująca - operator konwersji 937
- 25.3.1 Na co funkcja konwertująca zamieniać nie może 943
- 25.4 Który wariant konwersji wybrać? 944
- 25.5 Sytuacje, w których zachodzi konwersja 946
- 25.6 Zapis jawnego wywołania konwersji typów 947
- 25.6.1 Advocatus zapisu przypominającego: "wywołanie funkcji" 947
- 25.6.2 Advocatus zapisu: "rzutowanie" 948
- 25.7 Nie całkiem pasujące argumenty, czyli konwersje kompilatora przy dopasowaniu 948
- 25.8 Kilka rad dotyczących konwersji 953
- 25.9 Ćwiczenia 954
- 26.1 Co to znaczy przeładować operator? 956
- 26.2 Przeładowanie operatorów - definicja i trochę teorii 958
- 26.3 Moje zabawki 962
- 26.4 Funkcja operatorowa jako funkcja składowa 963
- 26.5 Funkcja operatorowa nie musi być przyjacielem klasy 966
- 26.6 Operatory predefiniowane 966
- 26.7 Ile operandów ma mieć ten operator? 967
- 26.8 Operatory jednooperandowe 967
- 26.9 Operatory dwuoperandowe 970
- 26.9.1 Przykład na przeładowanie operatora dwuoperandowego 970
- 26.9.2 Przemienność 972
- 26.9.3 Choć operatory inne, to nazwę mają tę samą 973
- 26.10 Przykład zupełnie niematematyczny 973
- 26.11 Operatory postinkrementacji i postdekrementacji - koniec z niesprawiedliwością 983
- 26.12 Praktyczne rady dotyczące przeładowania 985
- 26.13 Pojedynek: operator jako funkcja składowa czy globalna? 987
- 26.14 Zasłona spada, czyli tajemnica operatora << 988
- 26.15 Stałe dosłowne definiowane przez użytkownika 994
- 26.15.1 Przykład: stałe dosłowne użytkownika odbierane jako gotowane 998
- 26.15.2 Przykład: stałe dosłowne użytkownika odbierane na surowo 1007
- 26.16 Ćwiczenia 1010
- 27.1 Cztery operatory, które muszą być niestatycznymi funkcjami składowymi 1014
- 27.2 Operator przypisania = (wersja kopiująca) 1014
- 27.2.1 Przykład na przeładowanie (kopiującego) operatora przypisania 1016
- 27.2.2 Przypisanie "kaskadowe" 1023
- 27.2.3 Po co i jak zabezpieczamy się przed przypisaniem a = a 1025
- 27.2.4 Jak opowiedzieć potocznie o konieczności istnienia operatora przypisania? 1026
- 27.2.5 Kiedy kopiujący operator przypisania nie jest generowany automatycznie 1028
- 27.3 Przenoszący operator przypisania = 1028
- 27.4 Specjalne funkcje składowe i nierealna prosta zasada 1037
- 27.5 Operator [ ] 1038
- 27.6 Operator () 1042
- 27.7 Operator -> 1048
- 27.7.1 "Sprytny wskaźnik" wykorzystuje przeładowanie właśnie tego operatora 1050
- 27.8 Ćwiczenia 1057
- 28.1 Po co przeładowujemy operatory new i new[ ] 1059
- 28.2 Funkcja operator new i operator new[ ] w klasie K 1060
- 28.3 Jak się deklaruje operatory new i delete w klasie? 1063
- 28.4 Przykładowy program z przeładowanymi new i delete 1065
- 28.4.1 Gdy dopuszczamy rzucanie wyjątku std::bad_alloc 1066
- 28.4.2 Po staremu nadal można 1071
- 28.4.3 Rezerwacja tablicy obiektów naszej klasy Twektorek 1071
- 28.4.4 Nasze własne argumenty wysłane do operatora new 1073
- 28.4.5 X Operatory new i delete odziedziczone do klasy pochodnej 1075
- 28.4.6 A jednak polimorfizm jest możliwy 1077
- 28.4.7 Tworzenie i likwidowanie tablicy obiektów klasy pochodnej 1077
- 28.4.8 Operatory new, które nie rzucą wyjątku std::bad_alloc 1078
- 28.5 Rzut oka wstecz na przeładowanie operatorów 1083
- 28.6 Ćwiczenia 1084
- 29.1 Unia 1086
- 29.2 Unia anonimowa 1088
- 29.3 Klasa uniopodobna (unia z metryczką) 1090
- 29.4 Gdy składnik unii jest obiektem jakiejś klasy 1092
- 29.5 Unia o składnikach mających swe konstruktory, destruktory itp. 1094
- 29.6 Pola bitowe 1101
- 29.7 Unia i pola bitowe upraszczają deszyfrowanie słów danych 1105
- 29.8 Ćwiczenia 1112
- 30.1 Preludium: dwa sposoby przesłania kryterium oceniania 1116
- 30.1.1 Sposób I. Kryterium przekazane wskaźnikiem do funkcji (orzekającej) 1119
- 30.1.2 Sposób II. Kryterium umieszczone w obiekcie funkcyjnym 1121
- 30.1.3 Kryterium oceny z parametrem (czyli o wyższości funktorów) 1123
- 30.1.4 Funkcja-algorytm biblioteczny std::count_if 1125
- 30.1.5 Co lepsze: funkcja orzekająca czy orzekający obiekt funkcyjny? 1128
- 30.2 Wyrażenie lambda 1130
- 30.3 Formy wyrażenia lambda 1135
- 30.3.1 Lista argumentów (formalnych) 1136
- 30.3.2 Ciało wyrażenia lambda 1136
- 30.3.3 Typ rezultatu 1137
- 30.3.4 Lista wychwytywania 1138
- 30.3.5 Słowo kluczowe mutable w wyrażeniu lambda 1140
- 30.3.6 Specyfikacja dotycząca wyjątków rzucanych z wyrażenia lambda 1141
- 30.4 Wyrażenie lambda zastosowane w funkcji składowej 1141
- 30.5 Tworzenie (nazwanych) obiektów lambda słowem auto 1145
- 30.5.1 Tworzenie obiektów na lambdy słowem kluczowym auto 1146
- 30.5.2 Tworzenie (nazwanych) obiektów lambda szablonem std::function 1148
- 30.6 Stowarzyszenie martwych referencji 1153
- 30.7 Rekurencja przy użyciu wyrażenia lambda 1156
- 30.8 Wyrażenie lambda jako domniemana wartość argumentu 1160
- 30.9 Rzucanie wyjątków z wyrażenia lambda 1164
- 30.10 Vivat lambda! 1168
- 30.11 Ćwiczenia 1169
- 31.1 Istota dziedziczenia 1172
- 31.2 Dostęp do składników 1175
- 31.2.1 Prywatne składniki klasy podstawowej 1175
- 31.2.2 Nieprywatne składniki klasy podstawowej 1177
- 31.2.3 Klasa pochodna też decyduje 1178
- 31.2.4 Deklaracja dostępu using, czyli udostępnianie wybiórcze 1180
- 31.3 Czego się nie dziedziczy 1182
- 31.3.1 "Niedziedziczenie" konstruktorów 1183
- 31.3.2 "Niedziedziczenie" operatora przypisania 1184
- 31.3.3 "Niedziedziczenie" destruktora 1184
- 31.4 Drzewo genealogiczne 1184
- 31.5 Dziedziczenie - doskonałe narzędzie programowania 1186
- 31.6 Kolejność wywoływania konstruktorów 1188
- 31.7 Przypisanie i inicjalizacja obiektów w warunkach dziedziczenia 1193
- 31.7.1 Klasa pochodna nie definiuje swojego kopiującego operatora przypisania 1194
- 31.7.2 Klasa pochodna nie definiuje swojego konstruktora kopiującego 1195
- 31.7.3 Inicjalizacja i przypisywanie według obiektu będącego const 1196
- 31.8 Przykład: konstruktor kopiujący i operator przypisania dla klasy pochodnej 1196
- 31.8.1 Jak zainstalować mechanizm kopiowania w klasie pochodnej 1202
- 31.8.2 Jak w klasie pochodnej zainstalować mechanizm przenoszenia 1206
- 31.9 Dziedziczenie od kilku "rodziców" (wielodziedziczenie) 1209
- 31.9.1 Konstruktor klasy pochodnej przy wielodziedziczeniu 1211
- 31.9.2 Ryzyko wieloznaczności przy wielodziedziczeniu 1213
- 31.9.3 Czy bliższe pokrewieństwo usuwa wieloznaczność? 1215
- 31.9.4 Poszlaki 1216
- 31.10 Sposób na "odziedziczenie" konstruktorów 1217
- 31.11 Pojedynek: dziedziczenie klasy contra zawieranie obiektów składowych 1224
- 31.12 Wspaniałe konwersje standardowe przy dziedziczeniu 1226
- 31.12.1 Panorama korzyści 1230
- 31.12.2 Czego się nie opłaca robić 1232
- 31.12.3 Tuzin samochodów nie jest rodzajem tuzina pojazdów 1233
- 31.12.4 Konwersje standardowe wskaźnika do składnika klasy 1237
- 31.13 Wirtualne klasy podstawowe 1239
- 31.13.1 Publiczne i prywatne dziedziczenie tej samej klasy wirtualnej 1243
- 31.13.2 Uwagi o konstrukcji i inicjalizacji w przypadku klas wirtualnych 1243
- 31.13.3 Dominacja klas wirtualnych 1247
- 31.14 Ćwiczenia 1248
- 32.1 Wirtualny znaczy: (teoretycznie) możliwy 1255
- 32.2 Polimorfizm 1262
- 32.3 Typy rezultatów różnych realizacji funkcji wirtualnej 1265
- 32.3.1 Zamiast "odpowiedni typ rezultatu" kompilator powie "kowariant" 1266
- 32.4 Dalsze cechy funkcji wirtualnej 1268
- 32.5 Wczesne i późne wiązanie 1270
- 32.6 Kiedy dla wywołań funkcji wirtualnych zachodzi jednak wczesne wiązanie? 1272
- 32.7 Kulisy białej magii, czyli jak to jest zrobione 1273
- 32.8 Funkcja wirtualna, a mimo to inline 1275
- 32.9 Destruktor? Najlepiej wirtualny! 1276
- 32.10 Pojedynek - funkcje przeładowane, zasłaniające się i wirtualne (zacierające się) 1278
- 32.11 Kontekstowe słowa kluczowe override i final 1279
- 32.11.1 Przykład użycia override i final, a także wirtualnych destruktorów 1281
- 32.12 Klasy abstrakcyjne 1293
- 32.13 Wprawdzie konstruktor nie może być wirtualny, ale... 1300
- 32.14 Rzutowanie dynamic_cast jest dla typów polimorficznych 1306
- 32.15 POD, czyli Pospolite Stare Dane 1309
- 32.16 Wszystko, co najważniejsze 1312
- 32.17 Finis coronat opus 1315
- 32.18 Ćwiczenia 1315
- 33.1 Biblioteka iostream 1320
- 33.2 Strumieñ 1320
- 33.3 Strumienie zdefiniowane standardowo 1322
- 33.4 Operatory >> i << 1323
- 33.5 Domniemania w pracy strumieni zdefiniowanych standardowo 1324
- 33.6 Uwaga na priorytet 1327
- 33.7 Operatory << oraz >> definiowane przez użytkownika 1328
- 33.7.1 Operatorów wstawiania i wyjmowania ze strumienia nie dziedziczy się 1333
- 33.7.2 Operatory wstawiania i wyjmowania nie mogą być wirtualne. Niestety 1334
- 33.8 Sterowanie formatem 1337
- 33.9 Flagi stanu formatowania 1337
- 33.9.1 Znaczenie poszczególnych flag sterowania formatem 1339
- 33.10 Sposoby zmiany trybu (reguł) formatowania 1344
- 33.11 Manipulatory 1344
- 33.11.1 Manipulatory bezargumentowe 1345
- 33.11.2 Manipulatory mające argumenty 1350
- 33.11.3 Manipulator setw(int) 1350
- 33.11.4 Manipulator setfill 1353
- 33.11.5 Manipulator setprecision(int) 1353
- 33.11.6 Manipulator std::setbase(int) 1355
- 33.11.7 Manipulatory setiosflags, resetiosflags 1356
- 33.11.8 Tabele z zestawieniem manipulatorów 1356
- 33.12 Definiowanie swoich manipulatorów 1358
- 33.12.1 Manipulator jako funkcja 1358
- 33.12.2 Definiowanie manipulatora z argumentem 1360
- 33.13 Zmiana sposobu formatowania funkcjami setf, unsetf 1363
- 33.14 Dodatkowe funkcje do zmiany parametrów formatowania 1369
- 33.14.1 Funkcja width 1370
- 33.14.2 Funkcja składowa fill 1371
- 33.14.3 Funkcja precision 1372
- 33.14.4 Funkcja copyfmt 1373
- 33.15 Nieformatowane operacje wejścia/wyjścia 1373
- 33.16 Omówienie funkcji wyjmujących ze strumienia 1375
- 33.16.1 Funkcje do pracy ze znakami i napisami 1375
- 33.16.2 Wczytywanie binarne - funkcja read 1382
- 33.16.3 Funkcja ignore 1383
- 33.16.4 Pożyteczne funkcje pomocnicze 1384
- 33.16.5 Funkcje wstawiające do strumienia 1386
- 33.17 Ćwiczenia 1388
- 34.1 Strumienie płynące do lub od plików 1393
- 34.1.1 Otwieranie i zamykanie strumienia 1395
- 34.2 Błędy w trakcie pracy strumienia 1400
- 34.2.1 Flagi stanu błędu strumienia 1400
- 34.2.2 Funkcje do pracy na flagach błędu 1401
- 34.2.3 Kilka udogodnień dla sprawdzania poprawności 1402
- 34.2.4 Ustawianie i kasowanie flag błędu strumienia 1403
- 34.2.5 Trzy plagi, czyli "gotowiec", jak radzić sobie z błędami 1407
- 34.3 Przykład programu pracującego na plikach 1411
- 34.4 Przykład programu zapisującego dane tekstowo i binarnie 1413
- 34.4.1 Zapis w trybie tekstowym 1417
- 34.4.2 Odczyt z pliku tekstowego 1418
- 34.4.3 Zapis danych w plikach binarnych 1420
- 34.4.4 Odczyt danych z pliku binarnego 1421
- 34.5 Strumienie a technika rzucania wyjątków 1423
- 34.6 Wybór miejsca czytania lub pisania w pliku 1427
- 34.6.1 Funkcje składowe informujące o pozycji wskaźników 1428
- 34.6.2 Wybrane funkcje składowe do pozycjonowania wskaźników 1428
- 34.7 Pozycjonowanie w przykładzie większego programu 1431
- 34.8 Tie - harmonijna praca dwóch strumieni 1437
- 34.9 Ćwiczenia 1439
- 35.1 Strumień zapisujący do obiektu klasy string 1442
- 35.1.1 Przykłady ilustrujące użycie klasy ostringstream 1446
- 35.2 Strumień czytający z obiektu klasy string 1449
- 35.2.1 Prosty przykład użycia strumienia istringstream 1451
- 35.2.2 Strumień istringstream a wczytywanie parametrów-danych 1454
- 35.2.3 Wczytywanie argumentów wywoływania programu 1459
- 35.3 Ożenek: strumień stringstream czytający i zapisujący do stringu 1463
- 35.3.1 Przykładowy program posługujacy się klasą stringstream 1464
- 35.4 Ćwiczenia 1468
- 36.1 Przegląd kilku technik programowania 1470
- 36.1.1 Programowanie liniowe (linearne) 1471
- 36.1.2 Programowanie proceduralne (czyli "orientowane funkcyjnie") 1471
- 36.1.3 Programowanie z ukrywaniem (zgrupowaniem) danych 1471
- 36.1.4 Programowanie obiektowe - programowanie bazujące na obiektach 1472
- 36.1.5 Programowanie obiektowo orientowane (OO) 1472
- 36.2 O wyższości programowania OO nad Świętami Wielkiej Nocy 1473
- 36.3 Obiektowo orientowane: projektowanie 1476
- 36.4 Praktyczne wskazówki dotyczące projektowania programu techniką OO 1477
- 36.4.1 Rekonesans, czyli rozpoznanie zagadnienia 1478
- 36.4.2 Faza projektowania 1478
- 36.4.3 Etap 1. Identyfikacja zachowań systemu 1480
- 36.4.4 Etap 2. Identyfikacja obiektów (klas obiektów) 1480
- 36.4.5 Etap 3. Usystematyzowanie klas obiektów 1482
- 36.4.6 Etap 4. Określenie wzajemnych zależności klas 1483
- 36.4.7 Etap 5. Składanie modelu. Sekwencje działań obiektów i cykle życiowe 1485
- 36.5 Faza implementacji 1486
- 36.6 Przykład projektowania 1486
- 36.7 Rozpoznanie naszego zagadnienia 1487
- 36.8 Projektowanie 1491
- 36.8.1 Etap 1. Identyfikacja zachowań naszego systemu 1491
- 36.8.2 Etap 2. Identyfikacja klas obiektów, z którymi mamy do czynienia 1492
- 36.8.3 Etap 3. Usystematyzowanie klas obiektów z naszego systemu 1495
- 36.8.4 Etap 4. Określamy wzajemne zależności klas 1497
- 36.8.5 Etap 5. Składamy model naszego systemu 1499
- 36.9 Implementacja modelu naszego systemu 1504
- 37.1 Definiowanie szablonu klas 1513
- 37.2 Prosty program z szablonem klas 1515
- 37.2.1 Ostrożnie z referencją jako parametrem aktualnym 1517
- 37.3 Szablon do produkcji funkcji 1518
- 37.4 Cudów nie ma. Sorry... 1522
- 37.5 Jak rozmieszczać w plikach szablony klas? 1523
- 37.6 Tylko dla orłów 1524
- 37.7 Szablony klas, drugie starcie 1524
- 37.8 Co może być parametrem szablonu - zwiastun 1525
- 37.9 Rozbudowany przykład z szablonem klas 1525
- 37.9.1 Definiowanie funkcji składowych szablonu klas 1530
- 37.9.2 Składniki statyczne w szablonie klasy 1531
- 37.9.3 Obiekt klasy szablonowej tworzony operatorem new 1533
- 37.9.4 Dyrektywa using składnikiem szablonu klas 1534
- 37.9.5 Przeładowany operator << w szablonie klas 1536
- 37.9.6 Jawne wywołanie destruktora klasy szablonowej 1537
- 37.10 Reguła SFINAE 1538
- 37.11 Kiedy kompilator sięga po nasz szablon klas? 1542
- 37.12 Co może być parametrem szablonu? Szczegóły 1543
- 37.13 Parametry domniemane 1552
- 37.13.1 Szablon klas z domniemanymi parametrami 1552
- 37.13.2 Domniemane parametry w szablonie funkcji 1553
- 37.14 Zagnieżdżenie a szablony 1555
- 37.14.1 Szablon funkcji składowych zagnieżdżony w szablonie klasy 1556
- 37.14.2 Szablon klasy zagnieżdżony w zwykłej klasie 1562
- 37.14.3 Szablon klasy z zagnieżdżoną definicją klasy 1564
- 37.15 Poradnik: jak pisać deklaracje przyjaźni w świecie szablonów 1566
- 37.15.1 Szablon obdarza przyjaźnią swój parametr 1572
- 37.16 Użytkownik sam może specjalizować szablon klas 1573
- 37.16.1 Kompletna (zupełna) specjalizacja szablonu klasy 1576
- 37.16.2 Częściowa specjalizacja szablonu klasy 1578
- 37.16.3 Częściowa specjalizacja pozwala wybrać parametry będące wskaźnikami 1580
- 37.17 Specjalizacja funkcji składowej szablonu klas 1584
- 37.18 Specjalizacja użytkownika szablonu funkcji 1586
- 37.19 Ćwiczenia 1588
- 38.1 Per C++ ad astra 1594
- A.1 Dlaczego komputer nie liczy tak jak my? 1596
- A.2 System szesnastkowy (heksadecymalny) 1602
- A.3 Ćwiczenia 1604
1 Startujemy! 8
2 Instrukcje sterujące 20
3 Typy 44
4 Operatory 120
5 Typ string i typ vector - pierwsza wzmianka 157
6 Funkcje 175
7 Preprocesor 270
8 Tablice 289
9 Tablice wielowymiarowe 312
10 Wektory wielowymiarowe 322
11 Wskaźniki - wiadomości wstępne 354
12 Cztery domeny zastosowania wskaźników 370
13 Wskaźniki - runda trzecia 418
14 Wskaźniki do funkcji 446
15 Przeładowanie nazwy funkcji 470
16 Klasy 504
17 Biblioteczna klasa std::string 609
18 Deklaracje przyjaźni 696
19 Obsługa sytuacji wyjątkowych 710
20 Klasa-składnik oraz klasa lokalna 736
21 Konstruktory i destruktory 760
22 Konstruktory: kopiujący i przenoszący 840
23 Tablice obiektów 882
24 Wskaźnik do składników klasy 898
25 Konwersje definiowane przez użytkownika 927
26 Przeładowanie operatorów 956
27 Przeładowanie: =, [ ], ( ), -> 1014
28 Przeładowanie operatorów new i delete na użytek klasy 1059
29 Unie i pola bitowe 1086
30 Wyrażenia lambda i wysłanie kodu do innych funkcji 1116
31 Dziedziczenie klas 1172
32 Wirtualne funkcje składowe 1255
33 Operacje wejścia/wyjścia - podstawy 1319
34 Operacje we/wy na plikach 1393
35 Operacje we/wy na stringach 1442
36 Projektowanie programów orientowanych obiektowo 1470
37 Szablony - programowanie uogólnione 1512
38 Posłowie 1594
A Dodatek: Systemy liczenia 1596
Skorowidz 1606
Helion - inne książki
-
Nowość Promocja
Ta książka stanowi twardy dowód, że matematyka jest elastyczna, kreatywna i radosna. Potraktuj ją jako fascynującą podróż przez świat matematyki abstrakcyjnej do teorii kategorii. Przekonaj się, że bez formalnej wiedzy w tej dziedzinie możesz rozwinąć umiejętność matematycznego myślenia. Abstrakcyjne idee matematyczne pomogą Ci inaczej spojrzeć na aktualne wydarzenia, kwestie sprawiedliwości społecznej i przywilejów społecznych czy nawet na COVID-19.- PDF + ePub + Mobi
- Druk 29 pkt
(27,90 zł najniższa cena z 30 dni)
29.49 zł
59.00 zł (-50%) -
Nowość Promocja
Dzięki tej przystępnej książce, przeznaczonej dla programistów i badaczy, zrozumiesz podstawy techniczne modeli LLM. Dowiesz się, do czego można je zastosować, i odkryjesz elegancję ich architektury. Nauczysz się praktycznego korzystania z frameworka LangChain, zaprojektowanego do tworzenia responsywnych aplikacji. Dowiesz się, jak dostrajać model, jak zadawać mu pytania, poznasz także sprawdzone metody wdrażania i monitorowania środowisk produkcyjnych, dzięki czemu łatwo zbudujesz narzędzia do pisania, zaawansowane roboty konwersacyjne czy nowatorskie pomoce dla programistów. Liczne praktyczne przykłady i fragmenty kodu ułatwią Ci nie tylko przyswojenie podstaw, ale także używanie modeli LLM w innowacyjny i odpowiedzialny sposób.- PDF + ePub + Mobi
- Druk 39 pkt
(37,89 zł najniższa cena z 30 dni)
39.50 zł
79.00 zł (-50%) -
Nowość Promocja
W tej niezwykle pragmatycznej książce, przeznaczonej dla dyrektorów technicznych, praktyków uczenia maszynowego, twórców aplikacji, analityków biznesowych, inżynierów i badaczy danych, znajdziesz skuteczne techniki używania sztucznej inteligencji. Zaznajomisz się z cyklem życia projektu opartego na generatywnej AI i jej zastosowaniami, a także metodami doboru i dostrajania modeli, generowania danych wspomaganego wyszukiwaniem, uczenia przez wzmacnianie na podstawie informacji zwrotnych od człowieka, kwantyzacji, optymalizacji i wdrażania modeli. Poznasz szczegóły różnych typów modeli, między innymi dużych językowych (LLM), multimodalnych generujących obrazy (Stable Diffusion) i odpowiadających na pytania wizualne (Flamingo/IDEFICS).- PDF + ePub + Mobi
- Druk 39 pkt
(37,89 zł najniższa cena z 30 dni)
39.50 zł
79.00 zł (-50%) -
Nowość Promocja
Na rynku książek poświęconych analizie biznesowej w sektorze IT dostępnych jest kilka pozycji. Zawierają one informacje na temat praktyk, narzędzi i podejścia stosowanego w tej dziedzinie. Dotychczas jednak brakowało kompendium, które byłoby praktycznym przewodnikiem zbierającym doświadczenia z różnych projektów, firm i od ekspertów podchodzących w odmienny sposób do analizy biznesowej.- PDF + ePub + Mobi
- Druk 44 pkt
(39,90 zł najniższa cena z 30 dni)
44.50 zł
89.00 zł (-50%) -
Nowość Promocja
Sztuczna inteligencja stale się rozwija. Właściwie codziennie słyszymy o jej rosnących możliwościach, nowych osiągnięciach i przyszłości, jaką nam przyniesie. Jednak w tej książce skupiamy się nie na przyszłości, a na teraźniejszości i praktycznym obliczu AI - na usługach, które świadczy już dziś. Większość najciekawszych zastosowań sztucznej inteligencji bazuje na ML (uczenie maszynowe, ang. machine learning), NLP (przetwarzanie języka naturalnego, ang. natural language processing) i architekturze RAG (ang. retrieval augmented generation) zwiększającej możliwości tzw. dużych modeli językowych (LLM, ang. large language model). Stanowią one podwaliny budowy systemów AI, bez których te systemy często wcale nie mogłyby powstać.- PDF + ePub + Mobi
- Druk 39 pkt
(37,89 zł najniższa cena z 30 dni)
39.50 zł
79.00 zł (-50%) -
Nowość Promocja
Pierwsza była wirtualizacja: oprogramowanie symuluje istnienie zasobów logicznych korzystających z zasobów fizycznych. Po niej przyszła konteneryzacja, polegająca na tworzeniu obrazów - kopii danych - zawierających wszystkie pliki potrzebne do uruchomienia danej aplikacji. Środowiska produkcyjne z obu korzystają równolegle, ale to konteneryzacja stała się swojego rodzaju rewolucją w sektorze IT. Pozwoliła bowiem na sprawniejsze wdrażanie mikroserwisów, a także na optymalizację kosztów działania wielu aplikacji.- PDF + ePub + Mobi
- Druk 19 pkt
(17,90 zł najniższa cena z 30 dni)
19.95 zł
39.90 zł (-50%) -
Nowość Promocja
FPGA pochodzi od angielskiego field-programmable gate array. Polski odpowiednik to: bezpośrednio programowalna macierz bramek. FPGA jest rodzajem programowalnego układu logicznego. Ma tę samą funkcjonalność co układ scalony, tyle że może być wielokrotnie programowany bez demontażu. Z tego powodu znajduje zastosowanie tam, gdzie wymagana jest możliwość zmiany działania, na przykład w satelitach kosmicznych. Budujesz, instalujesz w urządzeniu docelowym, a potem modyfikujesz układ w zależności od potrzeb. Brzmi praktycznie, prawda?- Druk 24 pkt
(22,90 zł najniższa cena z 30 dni)
24.95 zł
49.90 zł (-50%) -
Nowość Promocja
Ta książka ułatwi Ci zgłębienie koncepcji kryjących się za działaniem nowoczesnych baz danych. Dzięki niej zrozumiesz, w jaki sposób struktury dyskowe różnią się od tych w pamięci i jak działają algorytmy efektywnego utrzymywania struktur B drzewa na dysku. Poznasz implementacje pamięci masowej o strukturze dziennika. Znajdziesz tu również wyjaśnienie zasad organizacji węzłów w klaster baz danych i specyfiki środowisk rozproszonych. Dowiesz się, jak algorytmy rozproszone poprawiają wydajność i stabilność systemu i jak uzyskać ostateczną spójność danych. Ponadto w książce zaprezentowano koncepcje antyentropii i plotek, służące do zapewniania zbieżności i rozpowszechniania danych, a także mechanizm transakcji utrzymujący spójność logiczną bazy.- PDF + ePub + Mobi
- Druk 44 pkt
(39,90 zł najniższa cena z 30 dni)
44.50 zł
89.00 zł (-50%) -
Nowość Promocja
Trudno wyobrazić sobie dzisiejszy świat bez możliwości operowania na danych - tym samym bez arkuszy kalkulacyjnych, do których każdy z nas ma dostęp w swoich komputerach. Najpopularniejszy z nich, czyli Excel, jest masowo używany zarówno w firmach, jak i instytucjach publicznych, ale także w gospodarstwach domowych.- PDF + ePub + Mobi
- Druk 19 pkt
(17,90 zł najniższa cena z 30 dni)
19.95 zł
39.90 zł (-50%) -
Nowość Promocja
Wprowadzenie obserwowalności do systemów jest wyzwaniem technicznym i kulturowym. Dzięki tej praktycznej książce zrozumiesz wartość obserwowalnych systemów i nauczysz się praktykować programowanie sterowane obserwowalnością. Przekonasz się, że dzięki jej wdrożeniu zespoły mogą szybko i bez obaw dostarczać kod, identyfikować wartości odstające i nietypowe zachowania, a ponadto lepiej zrozumieją doświadczenia użytkownika. Znajdziesz tu szczegółowe wyjaśnienia, co jest potrzebne do uzyskania wysokiej obserwowalności, a także szereg wskazówek, jak ulepszyć istniejące rozwiązania i pomyślnie dokonać migracji ze starszych narzędzi, takich jak wskaźniki, monitorowanie i zarządzanie dziennikami. Dowiesz się również, jaki wpływ ma obserwowalność systemu na kulturę organizacji ― i odwrotnie.- PDF + ePub + Mobi
- Druk 34 pkt
(32,90 zł najniższa cena z 30 dni)
34.50 zł
69.00 zł (-50%)
Dzięki opcji "Druk na żądanie" do sprzedaży wracają tytuły Grupy Helion, które cieszyły sie dużym zainteresowaniem, a których nakład został wyprzedany.
Dla naszych Czytelników wydrukowaliśmy dodatkową pulę egzemplarzy w technice druku cyfrowego.
Co powinieneś wiedzieć o usłudze "Druk na żądanie":
- usługa obejmuje tylko widoczną poniżej listę tytułów, którą na bieżąco aktualizujemy;
- cena książki może być wyższa od początkowej ceny detalicznej, co jest spowodowane kosztami druku cyfrowego (wyższymi niż koszty tradycyjnego druku offsetowego). Obowiązująca cena jest zawsze podawana na stronie WWW książki;
- zawartość książki wraz z dodatkami (płyta CD, DVD) odpowiada jej pierwotnemu wydaniu i jest w pełni komplementarna;
- usługa nie obejmuje książek w kolorze.
Masz pytanie o konkretny tytuł? Napisz do nas: sklep@ebookpoint.pl
Książka drukowana
Oceny i opinie klientów: Opus magnum C++. Programowanie w języku C++. Wydanie III poprawione (komplet) Jerzy Grębosz (33) Weryfikacja opinii następuje na podstawie historii zamowień na koncie Użytkownika umiejszczającego opinię.
(24)
(4)
(2)
(1)
(1)
(1)
Oceny i opinie poprzedniego wydania
więcej opinii