reklama - zainteresowany?

C++. Intensywny kurs - Helion

C++. Intensywny kurs
ebook
Autor: Josh Lospinoso
Tłumaczenie: Jacek Janusz
ISBN: 9788301217402
stron: 848, Format: ebook
Data wydania: 2021-03-17
Księgarnia: Helion

Cena książki: 89,40 zł (poprzednio: 149,00 zł)
Oszczędzasz: 40% (-59,60 zł)

Dodaj do koszyka C++. Intensywny kurs

Tagi: C++ - Programowanie

Ksi

Dodaj do koszyka C++. Intensywny kurs

Dodaj do koszyka C++. Intensywny kurs

Spis treści

C++. Intensywny kurs eBook -- spis treści

PRZEDMOWA XXV PODZIĘKOWANIA XXIX WSTĘP XXXI O książce XXXII Dla kogo jest przeznaczona ta książka? XXXIII Co znajduje się w tej książce? XXXIII Część I: Język C++ XXXIII Część II: Biblioteki i platformy XXXIV WSTĘP DLA PROGRAMISTÓW C XXXVII Uaktualnienie języka C do Super C XXXIX Przeciążanie funkcji XXXIX Referencje XL Inicjalizacja z użyciem słowa kluczowego auto XLIII Przestrzenie nazw i niejawne użycie słowa typedef z typami struct, union i enum XLIV Łączenie plików obiektowych języków C i C++ XLVI Główne cechy języka C++ XLVII Zwięzłe wyrażanie idei i ponowne wykorzystanie kodu XLVIII Biblioteka standardowa C++ XLIX Wyrażenia lambda LI Programowanie generyczne z użyciem szablonów LII Niezmienniki klas i zarządzanie zasobami LIII Semantyka przenoszenia LVII Zrelaksuj się i ciesz się swoimi nowymi butami LVIII CZĘŚĆ I: JĘZYK C++ 1 1. GOTOWI DO PRACY 3 Struktura prostego programu C++ 4 Stworzenie pierwszego pliku źródłowego w języku C++ 4 Funkcja main: punkt startowy programu 4 Biblioteki: wykorzystywanie kodu zewnętrznego 5 Zestaw narzędzi kompilatora 5 Konfigurowanie środowiska programistycznego 6 System Windows 10 i nowsze wersje: Visual Studio 6 System macOS: Xcode .8 System Linux: Xcode 10 Instalowanie kompilatora GCC na podstawie źródeł 10 Edytory tekstu 13 Rozpoczęcie samodzielnej pracy z językiem C++ 14 System typów języka C++ 14 Deklarowanie zmiennych .14 Inicjalizowanie stanu zmiennej 15 Instrukcje warunkowe 15 Funkcje 17 Specyfikatory formatowania w funkcji printf 19 Kolejne podejście do funkcji step_function 20 Komentarze 22 Debugowanie 22 Visual Studio 22 Xcode 24 Debugowanie w kompilatorach GCC i Clang za pomocą debuggerów GDB i LLDB 26 Podsumowanie 29 2. TYPY 31 Typy podstawowe 31 Typy całkowite 32 Typy zmiennoprzecinkowe 35 Typy znakowe 37 Typy logiczne 39 Typ std::byte 41 Typ size_t 42 Typ void 43 Tablice 44 Inicjalizacja tablicy 44 Dostęp do elementów tablicy 44 Zwięzła prezentacja pętli 45 Łańcuchy w stylu języka C 47 Typy zdefiniowane przez użytkownika 51 Typy wyliczeniowe 51 Klasy używające tradycyjnych struktur danych 54 Unie 56 W pełni funkcjonalne klasy C++ 57 Metody 57 Kontrola dostępu 58 Konstruktory 61 Inicjalizacja 62 Destruktor 68 Podsumowanie 68 3. TYPY REFERENCYJNE 71 Wskaźniki 71 Adresowanie zmiennych 72 Wyłuskiwanie zmiennych 74 Szczegółowy spis treści xiii Operator odwołania do składowej przez wskaźnik 75 Wskaźniki i tablice 76 Wskaźniki są niebezpieczne 79 Wskaźniki void i std::byte 81 Literał nullptr i wyrażenia logiczne 81 Referencje 81 Użycie wskaźników i referencji 82 Jednokierunkowe listy łączone: podstawowa struktura oparta na wskaźnikach 82 Stosowanie referencji 85 Wskaźniki this 86 Poprawa bezpieczeństwa za pomocą słowa kluczowego const 87 Zmienne składowe const 88 Listy inicjalizacyjne składowych 89 Dedukcja typu z użyciem słowa kluczowego auto 90 Inicjalizacja z użyciem słowa kluczowego auto 90 Słowo kluczowe auto i typy referencyjne 91 Słowo kluczowe auto i refaktoryzacja kodu 91 Podsumowanie 92 4. CYKL ŻYCIA OBIEKTU 93 Czas przechowywania obiektu 93 Alokacja, dealokacja i czas życia 94 Zarządzanie pamięcią 94 Automatyczny czas przechowywania 94 Statyczny czas przechowywania 95 Czas przechowywania lokalny dla wątku 98 Dynamiczny czas przechowywania 99 Śledzenie cyklu życia obiektu 101 Wyjątki 103 Słowo kluczowe throw 103 Użycie bloków try-catch 104 Klasy wyjątków biblioteki stdlib 106 Obsługa wyjątków 107 Wyjątki definiowane przez użytkownika 110 Słowo kluczowe noexcept 110 Stos wywołań i wyjątki 110 Klasa SimpleString 112 Dołączanie łańcuchów i ich wyświetlanie 114 Użycie klasy SimpleString 115 Wykorzystywanie klasy SimpleString 116 Zwijanie stosu wywołań 117 Wyjątki i wydajność 119 Alternatywy dla wyjątków 120 Semantyka kopiowania 121 Konstruktory kopiujące 123 Przypisanie kopiujące 126 Kopiowanie domyślne 128 Wskazówki dotyczące kopiowania 129 Semantyka przenoszenia 129 Kopiowanie może być nieekonomiczne 130 Kategorie wartości 131 Referencje do l-wartości i r-wartości 132 Funkcja std::move 133 Konstruktor przenoszący 134 Przypisanie przenoszące 134 Wersja końcowa 136 Metody generowane przez kompilator 138 Podsumowanie 139 5. POLIMORFIZM CZASU WYKONANIA 141 Polimorfizm 142 Motywujący przykład 142 Dodawanie nowych modułów logowania 144 Interfejsy 145 Składanie obiektów i dziedziczenie implementacji 145 Definiowanie interfejsów 146 Dziedziczenie po klasie nadrzędnej 146 Dziedziczenie składowych 147 Metody wirtualne 148 Czysto wirtualne klasy i wirtualne destruktory 150 Implementacja interfejsów 152 Użycie interfejsów 152 Aktualizacja programu rejestrującego transakcje bankowe 152 Wstrzykiwanie konstruktorem 153 Wstrzykiwanie przez właściwości 154 Wybór między wstrzykiwaniem konstruktorem a wstrzykiwaniem przez właściwości 155 Podsumowanie 156 6. POLIMORFIZM CZASU KOMPILACJI 157 Szablony 157 Deklarowanie szablonów 158 Definicja szablonu klasy 158 Definicja szablonu funkcji 159 Konkretyzowanie szablonów 159 Operatory rzutowania 159 Operator const_cast 160 Operator static_cast 160 Operator reinterpret_cast 161 Operator narrow_cast 162 Przykład użycia szablonu funkcji: funkcja mean wyznaczająca średnią 164 Uogólnianie funkcji mean 164 Dedukcja typu szablonu 167 Przykład użycia klasy szablonowej: SimpleUniquePointer 168 Kontrola typów w szablonach 170 Koncepty 172 Definiowanie konceptu 173 Cechy typu 173 Wymagania 175 Tworzenie konceptów z wyrażeń requires 176 Użycie konceptów 177 Doraźne wyrażenia requires 182 Wyrażenie static_assert: rozwiązanie tymczasowe dla kodu bez konceptów 183 Parametry szablonowe niebędące typami 184 Szablony wariadyczne 187 Zaawansowane zagadnienia związane z szablonami 188 Specjalizacja szablonu 188 Wiązanie nazw 188 Funkcja typu 188 Metaprogramowanie szablonów 188 Organizacja kodu źródłowego szablonów 189 Polimorfizm czasu kompilacji a polimorfizm czasu wykonania 189 Podsumowanie 190 7. WYRAŻENIA 191 Operatory 191 Operatory logiczne 191 Operatory arytmetyczne 192 Operatory przypisania 194 Operatory inkrementacji i dekrementacji 195 Operatory porównania 195 Operatory dostępu do składowych 196 Trójargumentowy operator warunkowy 196 Operator przecinkowy 197 Przeciążenie operatora 197 Przeciążanie operatora new 199 Priorytet i łączność operatorów 205 Kolejność ewaluacji 207 Literały definiowane przez użytkownika 208 Konwersje typów 209 Niejawne konwersje typów 209 Jawne konwersje typów 212 Rzutowania w stylu C 213 Konwersje typów definiowane przez użytkownika 215 Wyrażenia stałe 216 Kolorowy przykład 217 Użycie słowa kluczowego constexpr 219 Wyrażenia volatile 219 Podsumowanie 221 8. INSTRUKCJE 223 Instrukcje wyrażeń 223 Instrukcje złożone 224 Instrukcje deklaracji 225 Funkcje 225 Przestrzenie nazw 229 Aliasy typów 232 Wiązania strukturalne 234 Atrybuty 236 Instrukcje wyboru 237 Instrukcje if 237 Instrukcje switch 241 Instrukcje iteracyjne 243 Pętle while 243 Pętle do-while 244 Pętle for 245 Pętle for oparte na zakresie 247 Instrukcje skoku 251 Instrukcje break 251 Instrukcje continue 252 Instrukcje goto 253 Podsumowanie 254 9. FUNKCJE 257 Deklaracje funkcji 258 Modyfikatory przedrostkowe 258 Modyfikatory przyrostkowe 259 Typy zwracane auto 261 Użycie słowa kluczowego auto w szablonach funkcji 262 Rozwiązywanie przeciążenia 263 Funkcje wariadyczne 264 Szablony wariadyczne 266 Programowanie z użyciem pakietu parametrów 266 Ponowne zaprogramowanie funkcji sum 267 Wyrażenia fold 268 Wskaźniki do funkcji 268 Deklaracja wskaźnika do funkcji 268 Aliasy typów i wskaźniki do funkcji 270 Operator wywołania funkcji 270 Przykładowa funkcja zliczająca 271 Wyrażenia lambda 273 Użycie 273 Parametry i treść wyrażenia lambda 274 Argumenty domyślne 275 Generyczne wyrażenia lambda 275 Typy zwracane w wyrażeniach lambda 277 Przechwytywanie w wyrażeniu lambda 277 Wyrażenia lambda ze specyfikatorem constexpr 284 Klasa std::function 284 Deklarowanie obiektu klasy function 285 Przykład zaawansowany 286 Funkcja main i wiersz poleceń 287 Trzy przeciążenia funkcji main 288 Analiza parametrów programu 288 Bardziej zaawansowany przykład 290 Status zakończenia programu 292 Podsumowanie 293 CZĘŚĆ II: BIBLIOTEKI I PLATFORMY295 10. TESTOWANIE 297 Testy jednostkowe 297 Testy integracyjne 298 Testy akceptacyjne 298 Testy wydajnościowe 298 Zaawansowany przykład: operacja hamowania 299 Implementacja klasy AutoBrake 301 Projektowanie sterowane testami (TDD) 302 Dodawanie interfejsu do magistrali usługowej 314 Testy jednostkowe i platformy imitacyjne 321 Catch: platforma zarządzająca testami jednostkowymi 321 Google Test 328 Boot Test 336 Podsumowanie: platformy testujące 342 Platformy imitacyjne 342 Google Mock 344 HippoMock 353 Inne platformy imitacyjne: FakeIt i Trompeloeil 357 Podsumowanie 358 11. WSKAŹNIKI INTELIGENTNE 361 Wskaźniki inteligentne 361 Modele własności wskaźników inteligentnych 362 Wskaźniki scoped_ptr 362 Konstruowanie 363 Stworzenie środowiska testowego 363 Niejawna konwersja na typ logiczny na podstawie prawa własności 364 Opakowanie RAII 365 Semantyka wskaźnikowa 365 Porównywanie z wartością nullptr 366 Zamiana 366 Resetowanie i podmiana wskaźników scoped_ptr 367 Brak prawa przenoszenia 368 Typ boost::scoped_array 369 Skrócona lista wspieranych operacji 369 Wskaźniki unique_ptr 370 Konstruowanie 370 Wspierane operacje 371 Własność wyłączna i przenaszalna 371 Tablice wskaźników unique_ptr 372 Dealokatory 373 Użycie własnych dealokatorów w programowaniu systemowym 373 Skrócona lista wspieranych operacji 376 Wskaźniki shared_ptr 377 Konstruowanie 377 Określanie alokatora 378 Wspierane operacje 379 Własność niewyłączna i przenaszalna 379 Tablice shared_ptr 380 Dealokatory 380 Skrócona lista wspieranych operacji 381 Wskaźniki weak_ptr 382 Konstruowanie 383 Uzyskiwanie tymczasowego prawa własności 383 Wzorce zaawansowane 384 Wspierane operacje 384 Wskaźniki instrusive_ptr 385 Podsumowanie opcji związanych ze wskaźnikami inteligentnymi 387 Alokatory 387 Podsumowanie 390 12. NARZĘDZIA 393 Struktury danych 394 Klasa tribool 394 Klasa optional 396 Klasa pair 399 Klasa tuple 401 Klasa any 402 Klasa variant 404 Data i czas 408 Biblioteka DateTime z pakietu Boost 408 Biblioteka Chrono 412 Narzędzia numeryczne 418 Funkcje numeryczne 418 Liczby zespolone 420 Stałe matematyczne 421 Liczby losowe 422 Limity numeryczne 427 Konwersje numeryczne w bibliotece Boost 428 Arytmetyka liczb wymiernych w czasie kompilacji 430 Podsumowanie 432 13. KONTENERY 433 Kontenery sekwencyjne 434 Kontenery array 434 Kontenery vector 442 Rzadziej używane kontenery sekwencyjne 451 Kontenery asocjacyjne 462 Kontener set 463 Kontener multiset 469 Kontener map 475 Rzadziej używane kontenery asocjacyjne 483 Grafy i drzewa właściwości 484 Biblioteka Boost Graph Library 485 Szczegółowy spis treści xix Drzewa właściwości w bibliotece Boost 486 Kontener initializer_list 488 Podsumowanie 489 14. ITERATORY 493 Kategorie iteratorów 494 Iteratory wyjściowe 494 Iteratory wejściowe 497 Iteratory postępujące 498 Iteratory dwukierunkowe 500 Iteratory o dostępie swobodnym 501 Iteratory ciągłe 502 Iteratory mutowalne 502 Pomocnicze funkcje iteratorów 503 Funkcja std::advance 504 Funkcje std::next i std::prev 505 Funkcje std::distance 506 Funkcje std::iter_swap 507 Dodatkowe adaptery iteratorów 507 Adaptery iteratorów przenoszących 507 Adaptery iteratorów wstecznych 509 Podsumowanie 511 15. ŁAŃCUCHY 513 Typ std::string 514 Konstruowanie 514 Zarządzanie pamięcią i optymalizacje niewielkich łańcuchów 518 Dostęp do elementów i iteratorów 519 Porównywanie łańcuchów 521 Przetwarzanie elementów 522 Wyszukiwanie 528 Konwersje numeryczne 532 Widok na łańcuch 534 Konstruowanie 535 Operacje wspierane przez klasę string_view 536 Prawa własności, użycie i wydajność 537 Wyrażenia regularne 538 Wzorce 538 Klasa basic_regex 540 Algorytmy 541 Algorytmy związane z łańcuchami dostępne w pakiecie Boost 545 Zakresy biblioteki Boost 545 Predykaty 546 Klasyfikatory 548 Wyszukiwacze 549 Algorytmy modyfikujące 550 Dzielenie i łączenie 553 Wyszukiwanie 555 Tokenizer z pakietu Boost 556 Lokalizacje 557 Podsumowanie 557 16. STRUMIENIE 559 Strumienie 559 Klasy strumieni 560 Stan strumienia 567 Buforowanie i opróżnianie bufora 569 Manipulatory 570 Typy zdefiniowane przez użytkownika 572 Strumienie związane z łańcuchami 575 Strumienie plikowe 579 Bufory strumieniowe 585 Dostęp swobodny 587 Podsumowanie 588 17. SYSTEMY PLIKÓW 591 Pojęcia dotyczące systemu plików 592 Klasa std::filesystem::path 592 Tworzenie ścieżek 593 Dzielenie ścieżek na części składowe 593 Modyfikowanie ścieżek 595 Podsumowanie metod związanych z systemem plików dostępnych w klasie path 596 Pliki i katalogi 597 Obsługa błędów 598 Funkcje tworzące ścieżkę 598 Sprawdzanie typów plików 599 Sprawdzanie plików i katalogów 601 Modyfikowanie plików i katalogów 603 Iteratory katalogów 605 Konstruowanie 605 Elementy katalogu 606 Rekurencyjne iterowanie po katalogach 608 Wykorzystanie strumieni fstream 610 Podsumowanie 612 18. ALGORYTMY 615 Złożoność obliczeniowa algorytmów 616 Zasady wykonywania 617 Operacje niemodyfikujące kolekcje 618 Algorytm all_of 618 Algorytm any_of 619 Algorytm none_of 620 Algorytm for_each 621 Algorytm for_each_n 623 Algorytmy find, find_if i find_if_not 624 Algorytm find_end 626 Algorytm find_first_of 627 Algorytm adjacent_find 628 Algorytmy count i count_if 629 Algorytm mismatch 630 Algorytm equal 631 Algorytm is_permutation 632 Algorytm search 634 Algorytm search_n 635 Operacje modyfikujące kolekcje 636 Algorytm copy 636 Algorytm copy_n 637 Algorytm copy_backward 638 Algorytm move 639 Algorytm move_backward 640 Algorytm swap_ranges 642 Algorytm transform 642 Algorytm replace 644 Algorytm fill 646 Algorytm generate 647 Algorytm remove 648 Algorytm unique 650 Algorytm reverse 651 Algorytm sample 652 Algorytm shuffle 654 Operacje związane z sortowaniem 656 Algorytm sort 657 Algorytm stable_sort 658 Algorytm partial_sort 660 Algorytm is_sorted 661 Algorytm nth_element 662 Wyszukiwanie binarne 663 Algorytm lower_bound 664 Algorytm upper_bound 664 Algorytm equal_range 665 Algorytm binary_search 666 Algorytmy oparte na podziałach 667 Algorytm is_partitioned 667 Algorytm partition 668 Algorytm partition_copy 669 Algorytm stable_partition 671 Algorytmy scalające 672 Algorytm merge 672 Algorytmy wartości ekstremalnych 673 Algorytmy min i max 673 Algorytmy min_element i max_element 675 Algorytm clamp 676 Operacje numeryczne 677 Przydatne operatory 677 Algorytm iota 678 Algorytm accumulate 678 Algorytm reduce 680 Algorytm inner_product 681 Algorytm adjacent_difference 682 Algorytm partial_sum 683 Inne algorytmy 684 Biblioteka Boost Algorithm 686 19. WSPÓŁBIEŻNOŚĆ I RÓWNOLEGŁOŚĆ 689 Programowanie współbieżne 690 Zadania asynchroniczne 690 Współdzielenie i koordynacja 698 Niskopoziomowe funkcje związane ze współbieżnością 710 Algorytmy równoległe 711 Przykład: sortowanie równoległe 711 Algorytmy równoległe nie są magiczne 712 Podsumowanie 713 20. PROGRAMOWANIE SIECIOWE Z UŻYCIEM BIBLIOTEKI BOOST ASIO 715 Model programowania biblioteki Boost Asio 716 Programowanie sieciowe z użyciem biblioteki Asio 718 Protokół internetowy 718 Rozwiązywanie nazwy hosta 720 Nawiązywanie połączenia 722 Bufory 724 Odczytywanie danych z buforów i zapisywanie do nich 727 Hypertext Transfer Protocol (HTTP) 729 Implementacja prostego klienta HTTP za pomocą biblioteki Boost Asio 731 Asynchroniczne odczytywanie i zapisywanie 733 Tworzenie serwera 737 Wielowątkowość biblioteki Boost Asio 741 Podsumowanie 743 21. TWORZENIE APLIKACJI 745 Wsparcie programu 746 Obsługa zakończenia programu i zwalniania zasobów 747 Komunikacja z systemem operacyjnym 751 Obsługa sygnałów systemu operacyjnego 753 Biblioteka Boost ProgramOptions 755 Opis opcji 756 Parsowanie opcji 758 Przechowywanie opcji i dostęp do nich 759 Wykorzystanie zdobytej wiedzy 761 Specyficzne zagadnienia związane z kompilacją 763 Przywitaj się ponownie z preprocesorem 763 Optymalizacje kompilatora 766 Konsolidacja z językiem C 767 Podsumowanie 768 SKOROWIDZ

Dodaj do koszyka C++. Intensywny kurs

Code, Publish & WebDesing by CATALIST.com.pl



(c) 2005-2025 CATALIST agencja interaktywna, znaki firmowe należą do wydawnictwa Helion S.A.