• Kategorie
  • C++ Intensywny kurs. Szybkie wprowadzenie.

Autor(zy) Lospinoso Josh
Miejsce wydania Warszawa
Rok 2021
Wydanie I
Ilość stron 848
Format B5
Okładka miękka
159.00 -10% 143.00
szt. Do przechowalni
Czas realizacji zamówienia do 5 dni
Cena przesyłki 0
PP Przesyłka biznesowa pobranie (od 80 zł gratis) 0
Odbiór osobisty 0
PP Przesyłka biznesowa (od 80 zł gratis) 0
Paczkomaty InPost przelew (od 100 zł gratis) 0
Odbiór osobisty 0
Kurier przelew (od 200 zł gratis) 12
Kurier pobranie (od 200 zł gratis) 16
Dostępność 0 szt.
ISBN 978-83-01-21559-0
EAN 9788301215590

Zamów telefonicznie: 914340603

Zostaw telefon

C++ Intensywny kurs. Szybkie wprowadzenie.

Autor(zy): Lospinoso Josh
ISBN: 978-83-01-21559-0
Miejsce wydania: Warszawa
Rok wydania: 2021
Wydanie :I
Ilość stron: 848
Format: B5
Okładka: miękka

Książka „Intensywny kurs języka C++" jest przeznaczona dla średnio zaawansowanych i zaawansowanych programistów. Po krótkim wprowadzeniu od razu wprowadzi Cię w świat języka C++17 będącego najnowszą wersją standardu ISO. Część I obejmuje podstawowy język C++, poczynając od typów i funkcji, a kończąc na cyklu życia obiektu i wyrażeniach. W części II przedstawiono bibliotekę standardową i biblioteki Boost. Zapoznasz się ze specjalnymi klasami użytkowymi, strukturami danych i algorytmami, a także ze sposobami obsługi systemów plików i tworzeniem programów o wysokiej wydajności wykorzystujących sieć.



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 771



Nie ma jeszcze komentarzy ani ocen dla tego produktu.