Opus magnum C++. Programowanie w języku C++. Wydanie III poprawione (komplet) Jerzy Grębosz
- Autor:
- Jerzy Grębosz
- Wydawnictwo:
- Helion
- Wydawnictwo:
- Helion
- Ocena:
- 5.4/6 Opinie: 35
- 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
Nie pamiętasz jakiegoś algorytmu? Nie wiesz, jaką strukturę danych należy zastosować? Nie masz pojęcia, jak wyznaczyć złożoność obliczeniową algorytmu? Nie martw się, Twoje problemy należą już do przeszłości! Tablice informatyczne. Algorytmy pozwolą Ci szybko odnaleźć i przypomnieć sobie podstawowe zagadnienia dotyczące algorytmów i ich zastosowania. Będą doskonałą ściągą na wykładach lub laboratoriach, a nawet w pracy. Przykłady opracowane w C++ lub pseudokodzie pomogą właściwie zrozumieć i wdrożyć odpowiednie rozwiązania.- Druk 8 pkt
(6,90 zł najniższa cena z 30 dni)
8.49 zł
17.00 zł (-50%) -
Unlock the power of Houdini FX with this beginner-friendly guide. Learn essential techniques for creating dynamic visual effects, and elevate your artistic skills.
W przygotowaniu
Powiadom mnie, gdy książka będzie dostępna -
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 -
Promocja Przedsprzedaż
Mastering 3D graphics rendering is crucial for creating high-performance applications.This book equips you with advanced Vulkan techniques and practical recipes to craft rendering engines that push the boundaries of visual excellence and performance.- ePub 136 pkt
(134,10 zł najniższa cena z 30 dni)
-
Promocja
Get acquainted with the cutting-edge features in Rust Key Features Get familiar with the essential networking concepts in Rust. Explore and work with the basic and advanced features of Rust. Learn how to code and build your real-world applications using Rust. Description Rust is one of the most loved programming languages among developers. It is- ePub + Mobi 80 pkt
(39,90 zł najniższa cena z 30 dni)
80.91 zł
89.90 zł (-10%) -
Nowość Promocja
This book introduces beginner-level engineers to AUTOSAR, covering architecture, communication, SWC design, operating systems, RTE, and memory management. Through practical use cases, you'll build a solid foundation to confidently navigate AUTOSAR.- PDF + ePub 85 pkt
(94,99 zł najniższa cena z 30 dni)
85.49 zł
94.99 zł (-10%) -
Nowość Promocja
Learn how to build and program real autonomous robots Key Features Simplified coverage on fundamentals of building a robot platform. Learn to program Raspberry Pi for interacting with hardware. Cutting-edge coverage on autonomous motion, mapping, and path planning algorithms for advanced robotics. Description Practical Robotics in C++ teaches the- ePub + Mobi 80 pkt
(39,90 zł najniższa cena z 30 dni)
80.91 zł
89.90 zł (-10%) -
Promocja
From level design to tool production, this book provides an easy-to-follow open-source roadmap to crafting diverse levels, integrating 3D assets, and optimizing your projects to enhance your PCG tool's capabilities within Unreal Engine 5.- PDF + ePub 134 pkt
(149,00 zł najniższa cena z 30 dni)
134.10 zł
149.00 zł (-10%) -
Promocja
This book will show you how to develop, test, and debug high-performance software by using concurrent and asynchronous C++20 and C++23 features like threading and coroutines. You'll explore Boost.Asio to develop network and low-level I/O projects.- PDF + ePub 107 pkt
(119,00 zł najniższa cena z 30 dni)
107.10 zł
119.00 zł (-10%) -
Promocja
This practical book demonstrates why C++ is still one of the dominant production-quality languages for financial applications and systems. Many programmers believe that C++ is too difficult to learn. Author Daniel Hanson demonstrates that this is no longer the case, thanks to modern features added to the C++ Standard beginning in 2011.Financial pro- ePub + Mobi 211 pkt
(29,90 zł najniższa cena z 30 dni)
211.65 zł
249.00 zł (-15%)
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
(31,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
- Dane producenta
- » Dane producenta:
- 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
Helion SA
ul. Kościuszki 1C
41-100 Gliwice
e-mail: gpsr@helion.pl
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
Wirtualizacja umożliwia równoczesne uruchomienie różnych systemów operacyjnych na jednym sprzęcie. Dzięki temu można lepiej wykorzystać dostępną moc obliczeniową i zasoby. Oczywiście, by móc czerpać z dobrodziejstw wirtualizacji, potrzeba odpowiednich narzędzi. Jednym z najpopularniejszych programów wspierających wirtualizację jest VirtualBox. Aby łatwiej zarządzać wirtualnymi maszynami, skuteczniej monitorować ich wydajność, sprawnie je konserwować, warto nauczyć się używać właśnie tego narzędzia. Najszybciej zrobisz to z naszym poradnikiem.- PDF + ePub + Mobi
- Druk 27 pkt
(26,90 zł najniższa cena z 30 dni)
27.45 zł
54.90 zł (-50%) -
Nowość Promocja
Ta książka jest kolejnym, starannie zaktualizowanym wydaniem cenionego i lubianego poradnika, dzięki któremu Twoja praca w języku C# stanie się przyjemna i wydajna. Znajdziesz tu liczne przykłady prezentujące nowe elementy .NET 8: aliasy typów i konstruktory podstawowe, zapewniające spójny i czytelny kod. Nauczysz się stosować klauzule ochronne i uproszczoną implementację pamięci podręcznej w ASP.NET Core 8. Poznasz też nową metodę kompilacji AOT, dzięki której publikowane serwisy zajmują mniej pamięci i szybciej się uruchamiają. Na zakończenie zaznajomisz się również z technologią Blazor Full Stack, będącą nowym, zunifikowanym modelem elastycznego projektowania aplikacji sieciowych.- PDF + ePub + Mobi
- Druk 89 pkt
(39,90 zł najniższa cena z 30 dni)
89.50 zł
179.00 zł (-50%) -
Nowość Promocja
Dzięki tej książce nauczysz się stosować w praktyce zasady Zero Trust: nic nie jest oczywiste, a każde żądanie dostępu ma być sprawdzone i autoryzowane. Poznasz najważniejsze koncepcje tego modelu, takie jak silnik zaufania, silnik zasad czy agregat kontekstowy. Dowiesz się, jak budować zaufanie między różnymi elementami sieci, bazując na istniejących technikach. Spojrzysz na model Zero Trust z punktu widzenia hakera, a następnie zagłębisz się w szczegóły architektur, standardów i struktur Zero Trust opracowanych przez organizacje NIST, CISA czy DoD. W ten sposób zrozumiesz model zerowego zaufania z perspektywy wiodących instytucji w branży. Przeanalizujesz też wpływ sztucznej inteligencji, komputerów kwantowych i technologii ochrony prywatności na model Zero Trust.- PDF + ePub + Mobi
- Druk 38 pkt
(34,90 zł najniższa cena z 30 dni)
38.50 zł
77.00 zł (-50%) -
Nowość Promocja
Witaj w internecie rzeczy! Tutaj możliwości ogranicza jedynie Twoja wyobraźnia - a także to, czy potrafisz sprawnie się poruszać po świecie, którym rządzą mikrokontrolery. Dzisiejsze rozwiązania stosowane w modelach IoT stanowią klucz do zrozumienia i kształtowania przyszłości. Stosowane w nich układy ESP8266 i ESP32 wyróżniają się wszechstronnością, niskim kosztem i potężną mocą obliczeniową. To czyni je idealnym narzędziem dla entuzjastów, hobbystów i profesjonalistów pragnących testować swoje pomysły w praktyce.- PDF + ePub + Mobi
- Druk 24 pkt
(19,90 zł najniższa cena z 30 dni)
24.95 zł
49.90 zł (-50%) -
Nowość Promocja
Dzięki tej książce przyswoisz różne techniki, które pomogą Ci stać się bardziej produktywnym analitykiem danych. Najpierw zapoznasz się z tematami związanymi z rozumieniem danych i umiejętnościami miękkimi, które okazują się konieczne w pracy dobrego danologa. Dopiero potem skupisz się na kluczowych aspektach uczenia maszynowego. W ten sposób stopniowo przejdziesz ścieżkę od przeciętnego kandydata do wyjątkowego specjalisty data science. Umiejętności opisane w tym przewodniku przez wiele lat były rozpoznawane, katalogowane, analizowane i stosowane do generowania wartości i szkolenia danologów w różnych firmach i branżach.- PDF + ePub + Mobi
- Druk 39 pkt
(34,90 zł najniższa cena z 30 dni)
39.50 zł
79.00 zł (-50%) -
Nowość Promocja
Dzięki temu praktycznemu przewodnikowi profesjonaliści zajmujący się danymi dobrze zrozumieją wady i zalety poszczególnych rozwiązań. Omówiono tu typowe zagadnienia dotyczące architektur danych, w tym ich rozwój i możliwości. Żadna architektura nie jest na tyle uniwersalna, by być odpowiednia w każdej sytuacji, dlatego w książce znajdziesz rzetelne porównanie cech poszczególnych architektur. Dowiesz się, jakie kompromisy towarzyszą każdej z nich, niezależnie od popularności. W ten sposób o wiele łatwiej przyjdzie Ci wybór rozwiązania, które najlepiej odpowiada Twoim potrzebom.- PDF + ePub + Mobi
- Druk 39 pkt
(34,90 zł najniższa cena z 30 dni)
39.50 zł
79.00 zł (-50%) -
Nowość Promocja
Microsoft konsekwentnie doskonali się w tworzeniu wyjątkowych technologii i Azure jest tego świetnym przykładem. Pozwala nie tylko na rozwijanie natywnych aplikacji chmurowych, ale również na efektywną migrację starszych systemów, wdrażanie rozwiązań hybrydowych i modernizację istniejącego oprogramowania pod kątem skalowalności. Skorzystanie z pełni możliwości Azure wymaga jednak dobrego zrozumienia koncepcji przetwarzania w chmurze.- PDF + ePub + Mobi
- Druk 59 pkt
(39,90 zł najniższa cena z 30 dni)
59.50 zł
119.00 zł (-50%) -
Nowość Promocja
Tę książkę docenią osoby, które w ramach codziennej pracy integrują tematy związane z prywatnością i bezpieczeństwem danych. To przewodnik dla pragmatyków, zapewniający gruntowną wiedzę o współczesnych elementach ochrony danych, takich jak prywatność różnicowa, uczenie federacyjne i obliczenia szyfrowane. Znajdziesz tu przydatne wskazówki, jak również najlepsze, wielokrotnie sprawdzone praktyki integracji przełomowych technologii, pozwalające skutecznie i na wysokim poziomie dbać o prywatność i bezpieczeństwo danych.- PDF + ePub + Mobi
- Druk 39 pkt
(34,90 zł najniższa cena z 30 dni)
39.50 zł
79.00 zł (-50%) -
Nowość Promocja
Dzięki tej praktycznej książce zrozumiesz podstawowe koncepcje związane z biblioteką React, takie jak składnia JSX, wzorce zaawansowane, wirtualny model DOM, mechanizm rekoncyliacji Reacta, a także zaawansowane techniki optymalizacji. W rzeczywistości jest to dość złożona biblioteka, jednak tutaj jej tajniki zostały wyjaśnione w wyjątkowo przystępny sposób. A to oznacza, że szybko i dogłębnie zrozumiesz mechanizmy kryjące się za działaniem Reacta, zdobędziesz umiejętności pozwalające na tworzenie intuicyjnego kodu Reacta, zrozumiesz jego niuanse i koncepcje ― i przejdziesz na zupełnie nowy poziom biegłości.- PDF + ePub + Mobi
- Druk 39 pkt
(34,90 zł najniższa cena z 30 dni)
39.50 zł
79.00 zł (-50%) -
Nowość Promocja
Dzięki tej książce zorientujesz się, że utrzymanie kontroli nad architekturą w dużej mierze zależy od zastosowanego stylu architektonicznego. Zrozumiesz też wady konwencjonalnej architektury warstwowej i zapoznasz się z zaletami stylów koncentrujących się na dziedzinie, takich jak architektura heksagonalna. Dowiesz się także, jak można ją wyrazić w kodzie źródłowym. Poznasz szczegóły różnych strategii mapowania między warstwami architektury heksagonalnej, a ponadto prześledzisz, jak różne elementy architekturalne łączą się w jedną aplikację. Bazując na stylu architektury heksagonalnej, nauczysz się tworzyć intuicyjne w późniejszej obsłudze technicznej aplikacje internetowe. Szybko się przekonasz, że wiedza zdobyta w trakcie lektury pozwoli Ci na tworzenie wysokojakościowych aplikacji, które przetrwają próbę czasu.- PDF + ePub + Mobi
- Druk 24 pkt
(19,90 zł najniższa cena z 30 dni)
24.95 zł
49.90 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 (35) Weryfikacja opinii następuje na podstawie historii zamowień na koncie Użytkownika umiejszczającego opinię. Użytkownik mógł otrzymać punkty za opublikowanie opinii uprawniające do uzyskania rabatu w ramach Programu Punktowego.
(26)
(4)
(2)
(1)
(1)
(1)
Oceny i opinie poprzedniego wydania
więcej opinii