C++. Intensywny kurs - Helion
ebook
Autor: Josh LospinosoT艂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艂)
Tagi: C++ - Programowanie
Spis tre艣ci
C++. Intensywny kurs eBook -- spis tre艣ci
- Ok艂adka
- Strona tytu艂owa
- Strona redakcyjna
- Spis tre艣ci
- Przedmowa
- Podzi臋kowania
- Wst臋p
- O ksi膮偶ce
- Dla kogo jest przeznaczona ta ksi膮偶ka?
- Co znajduje si臋 w tej ksi膮偶ce?
- Cz臋艣膰 I: J臋zyk C++
- Cz臋艣膰 II: Biblioteki i platformy
- Wst臋p dla programist贸w C
- Uaktualnienie j臋zyka C do Super C
- Przeci膮偶anie funkcji
- Referencje
- Inicjalizacja z u偶yciem s艂owa kluczowego auto
- Przestrzenie nazw i niejawne u偶ycie s艂owa typedef z typami struct, union i enum
- 艁膮czenie plik贸w obiektowych j臋zyk贸w C i C++
- G艂贸wne cechy j臋zyka C++
- Zwi臋z艂e wyra偶anie idei i ponowne wykorzystanie kodu
- Biblioteka standardowa C++
- Wyra偶enia lambda
- Programowanie generyczne z u偶yciem szablon贸w
- Niezmienniki klas i zarz膮dzanie zasobami
- Semantyka przenoszenia
- Zrelaksuj si臋 i ciesz si臋 swoimi nowymi butami
- Uaktualnienie j臋zyka C do Super C
- Cz臋艣膰 I. J臋zyk C++
- Rozdzia艂 1. Gotowi do pracy
- Struktura prostego programu C++
- Stworzenie pierwszego pliku 藕r贸d艂owego w j臋zyku C++
- Funkcja main: punkt startowy programu
- Biblioteki: wykorzystywanie kodu zewn臋trznego
- Zestaw narz臋dzi kompilatora
- Konfigurowanie 艣rodowiska programistycznego
- System Windows 10 i nowsze wersje: Visual Studio
- System macOS: Xcode
- System Linux: Xcode
- Edytory tekstu
- Rozpocz臋cie samodzielnej pracy z j臋zykiem C++
- System typ贸w j臋zyka C++
- Deklarowanie zmiennych
- Inicjalizowanie stanu zmiennej
- Instrukcje warunkowe
- Funkcje
- Specyfikatory formatowania w funkcji printf
- Kolejne podej艣cie do funkcji step_function
- Komentarze
- Debugowanie
- Visual Studio
- Xcode
- Debugowanie w kompilatorach GCC i Clang za pomoc膮 debugger贸w GDB i LLDB
- Podsumowanie
- Struktura prostego programu C++
- Rozdzia艂 2. Typy
- Typy podstawowe
- Typy ca艂kowite
- Typy zmiennoprzecinkowe
- Typy znakowe
- Typy logiczne
- Typ std::byte
- Typ size_t
- Typ void
- Tablice
- Inicjalizacja tablicy
- Dost臋p do element贸w tablicy
- Zwi臋z艂a prezentacja p臋tli
- 艁a艅cuchy w stylu j臋zyka C
- Typy zdefiniowane przez u偶ytkownika
- Typy wyliczeniowe
- Klasy u偶ywaj膮ce tradycyjnych struktur danych
- Unie
- W pe艂ni funkcjonalne klasy C++
- Metody
- Kontrola dost臋pu
- Konstruktory
- Inicjalizacja
- Destruktor
- Podsumowanie
- Typy podstawowe
- Rozdzia艂 3. Typy referencyjne
- Wska藕niki
- Adresowanie zmiennych
- Wy艂uskiwanie zmiennych
- Operator odwo艂ania do sk艂adowej przez wska藕nik
- Wska藕niki i tablice
- Wska藕niki s膮 niebezpieczne
- Wska藕niki void i std::byte
- Litera艂 nullptr i wyra偶enia logiczne
- Referencje
- U偶ycie wska藕nik贸w i referencji
- Jednokierunkowe listy 艂膮czone: podstawowa struktura oparta na wska藕nikach
- Stosowanie referencji
- Wska藕niki this
- Poprawa bezpiecze艅stwa za pomoc膮 s艂owa kluczowego const
- Zmienne sk艂adowe const
- Listy inicjalizacyjne sk艂adowych
- Dedukcja typu z u偶yciem s艂owa kluczowego auto
- Inicjalizacja z u偶yciem s艂owa kluczowego auto
- S艂owo kluczowe auto i typy referencyjne
- S艂owo kluczowe auto i refaktoryzacja kodu
- Podsumowanie
- Wska藕niki
- Rozdzia艂 4. Cykl 偶ycia obiektu
- Czas przechowywania obiektu
- Alokacja, dealokacja i czas 偶ycia
- Zarz膮dzanie pami臋ci膮
- Automatyczny czas przechowywania
- Statyczny czas przechowywania
- Czas przechowywania lokalny dla w膮tku
- Dynamiczny czas przechowywania
- 艢ledzenie cyklu 偶ycia obiektu
- Wyj膮tki
- S艂owo kluczowe throw
- U偶ycie blok贸w try-catch
- Klasy wyj膮tk贸w biblioteki stdlib
- Obs艂uga wyj膮tk贸w
- Wyj膮tki definiowane przez u偶ytkownika
- S艂owo kluczowe noexcept
- Stos wywo艂a艅 i wyj膮tki
- Klasa SimpleString
- Do艂膮czanie 艂a艅cuch贸w i ich wy艣wietlanie
- U偶ycie klasy SimpleString
- Wykorzystywanie klasy SimpleString
- Zwijanie stosu wywo艂a艅
- Wyj膮tki i wydajno艣膰
- Alternatywy dla wyj膮tk贸w
- Semantyka kopiowania
- Konstruktory kopiuj膮ce
- Przypisanie kopiuj膮ce
- Kopiowanie domy艣lne
- Wskaz贸wki dotycz膮ce kopiowania
- Semantyka przenoszenia
- Kopiowanie mo偶e by膰 nieekonomiczne
- Kategorie warto艣ci
- Referencje do l-warto艣ci i r-warto艣ci
- Funkcja std::move
- Konstruktor przenosz膮cy
- Przypisanie przenosz膮ce
- Wersja ko艅cowa
- Metody generowane przez kompilator
- Podsumowanie
- Czas przechowywania obiektu
- Rozdzia艂 5. Polimorfizm czasu wykonania
- Polimorfizm
- Motywuj膮cy przyk艂ad
- Dodawanie nowych modu艂贸w logowania
- Interfejsy
- Sk艂adanie obiekt贸w i dziedziczenie implementacji
- Definiowanie interfejs贸w
- Dziedziczenie po klasie nadrz臋dnej
- Dziedziczenie sk艂adowych
- Metody wirtualne
- Czysto wirtualne klasy i wirtualne destruktory
- Implementacja interfejs贸w
- U偶ycie interfejs贸w
- Aktualizacja programu rejestruj膮cego transakcje bankowe
- Wstrzykiwanie konstruktorem
- Wstrzykiwanie przez w艂a艣ciwo艣ci
- Wyb贸r mi臋dzy wstrzykiwaniem konstruktorem a wstrzykiwaniem przez w艂a艣ciwo艣ci
- Podsumowanie
- Rozdzia艂 6. Polimorfizm czasu kompilacji
- Szablony
- Deklarowanie szablon贸w
- Definicja szablonu klasy
- Definicja szablonu funkcji
- Konkretyzowanie szablon贸w
- Operatory rzutowania
- Operator const_cast
- Operator static_cast
- Operator reinterpret_cast
- Operator narrow_cast
- Przyk艂ad u偶ycia szablonu funkcji: funkcja mean wyznaczaj膮ca 艣redni膮
- Uog贸lnianie funkcji mean
- Dedukcja typu szablonu
- Przyk艂ad u偶ycia klasy szablonowej: SimpleUniquePointer
- Kontrola typ贸w w szablonach
- Koncepty
- Definiowanie konceptu
- Cechy typu
- Wymagania
- Tworzenie koncept贸w z wyra偶e艅 requires
- U偶ycie koncept贸w
- Dora藕ne wyra偶enia requires
- Wyra偶enie static_assert: rozwi膮zanie tymczasowe dla kodu bez koncept贸w
- Parametry szablonowe nieb臋d膮ce typami
- Szablony wariadyczne
- Zaawansowane zagadnienia zwi膮zane z szablonami
- Specjalizacja szablonu
- Wi膮zanie nazw
- Funkcja typu
- Metaprogramowanie szablon贸w
- Organizacja kodu 藕r贸d艂owego szablon贸w
- Polimorfizm czasu kompilacji a polimorfizm czasu wykonania
- Podsumowanie
- Rozdzia艂 7. Wyra偶enia
- Operatory
- Operatory logiczne
- Operatory arytmetyczne
- Operatory przypisania
- Operatory inkrementacji i dekrementacji
- Operatory por贸wnania
- Operatory dost臋pu do sk艂adowych
- Tr贸jargumentowy operator warunkowy
- Operator przecinkowy
- Przeci膮偶enie operatora
- Przeci膮偶anie operatora new
- Priorytet i 艂膮czno艣膰 operator贸w
- Kolejno艣膰 ewaluacji
- Litera艂y definiowane przez u偶ytkownika
- Konwersje typ贸w
- Niejawne konwersje typ贸w
- Jawne konwersje typ贸w
- Rzutowania w stylu C
- Konwersje typ贸w definiowane przez u偶ytkownika
- Wyra偶enia sta艂e
- Kolorowy przyk艂ad
- U偶ycie s艂owa kluczowego constexpr
- Wyra偶enia volatile
- Podsumowanie
- Operatory
- Rozdzia艂 8. Instrukcje
- Instrukcje wyra偶e艅
- Instrukcje z艂o偶one
- Instrukcje deklaracji
- Funkcje
- Przestrzenie nazw
- Aliasy typ贸w
- Wi膮zania strukturalne
- Atrybuty
- Instrukcje wyboru
- Instrukcje if
- Instrukcje switch
- Instrukcje iteracyjne
- P臋tle while
- P臋tle do-while
- P臋tle for
- P臋tle for oparte na zakresie
- Instrukcje skoku
- Instrukcje break
- Instrukcje continue
- Instrukcje goto
- Podsumowanie
- Rozdzia艂 9. Funkcje
- Deklaracje funkcji
- Modyfikatory przedrostkowe
- Modyfikatory przyrostkowe
- Typy zwracane auto
- U偶ycie s艂owa kluczowego auto w szablonach funkcji
- Rozwi膮zywanie przeci膮偶enia
- Funkcje wariadyczne
- Szablony wariadyczne
- Programowanie z u偶yciem pakietu parametr贸w
- Ponowne zaprogramowanie funkcji sum
- Wyra偶enia fold
- Wska藕niki do funkcji
- Deklaracja wska藕nika do funkcji
- Aliasy typ贸w i wska藕niki do funkcji
- Operator wywo艂ania funkcji
- Przyk艂adowa funkcja zliczaj膮ca
- Wyra偶enia lambda
- U偶ycie
- Parametry i tre艣膰 wyra偶enia lambda
- Argumenty domy艣lne
- Generyczne wyra偶enia lambda
- Typy zwracane w wyra偶eniach lambda
- Przechwytywanie w wyra偶eniu lambda
- Wyra偶enia lambda ze specyfikatorem constexpr
- Klasa std::function
- Deklarowanie obiektu klasy function
- Przyk艂ad zaawansowany
- Funkcja main i wiersz polece艅
- Trzy przeci膮偶enia funkcji main
- Analiza parametr贸w programu
- Bardziej zaawansowany przyk艂ad
- Status zako艅czenia programu
- Podsumowanie
- Deklaracje funkcji
- Rozdzia艂 1. Gotowi do pracy
- Cz臋艣膰 II. BIBLIOTEKI I PLATFORMY
- Rozdzia艂 10. Testowanie
- Testy jednostkowe
- Testy integracyjne
- Testy akceptacyjne
- Testy wydajno艣ciowe
- Zaawansowany przyk艂ad: operacja hamowania
- Implementacja klasy AutoBrake
- Projektowanie sterowane testami (TDD)
- Stworzenie szkieletu klasy AutoBrake
- Dodawanie interfejsu do magistrali us艂ugowej
- Testy jednostkowe i platformy imitacyjne
- Catch: platforma zarz膮dzaj膮ca testami jednostkowymi
- Google Test
- Boot Test
- Podsumowanie: platformy testuj膮ce
- Platformy imitacyjne
- Google Mock
- HippoMock
- Inne platformy imitacyjne: FakeIt i Trompeloeil
- Podsumowanie
- Testy jednostkowe
- Rozdzia艂 11. Wska藕niki inteligentne
- Wska藕niki inteligentne
- Modele w艂asno艣ci wska藕nik贸w inteligentnych
- Wska藕niki scoped_ptr
- Konstruowanie
- Stworzenie 艣rodowiska testowego
- Niejawna konwersja na typ logiczny na podstawie prawa w艂asno艣ci
- Opakowanie RAII
- Semantyka wska藕nikowa
- Por贸wnywanie z warto艣ci膮 nullptr
- Zamiana
- Resetowanie i podmiana wska藕nik贸w scoped_ptr
- Brak prawa przenoszenia
- Typ boost::scoped_array
- Skr贸cona lista wspieranych operacji
- Wska藕niki unique_ptr
- Konstruowanie
- Wspierane operacje
- W艂asno艣膰 wy艂膮czna i przenaszalna
- Tablice wska藕nik贸w unique_ptr
- Dealokatory
- U偶ycie w艂asnych dealokator贸w w programowaniu systemowym
- Skr贸cona lista wspieranych operacji
- Wska藕niki shared_ptr
- Konstruowanie
- Okre艣lanie alokatora
- Wspierane operacje
- W艂asno艣膰 niewy艂膮czna i przenaszalna
- Tablice shared_ptr
- Dealokatory
- Skr贸cona lista wspieranych operacji
- Wska藕niki weak_ptr
- Konstruowanie
- Uzyskiwanie tymczasowego prawa w艂asno艣ci
- Wzorce zaawansowane
- Wspierane operacje
- Wska藕niki instrusive_ptr
- Podsumowanie opcji zwi膮zanych ze wska藕nikami inteligentnymi
- Alokatory
- Podsumowanie
- 膯wiczenia
- Rozdzia艂 12. Narz臋dzia
- Struktury danych
- Klasa tribool
- Klasa optional
- Klasa pair
- Klasa tuple
- Klasa any
- Klasa variant
- Data i czas
- Biblioteka DateTime z pakietu Boost
- Biblioteka Chrono
- Narz臋dzia numeryczne
- Funkcje numeryczne
- Liczby zespolone
- Sta艂e matematyczne
- Liczby losowe
- Limity numeryczne
- Konwersje numeryczne w bibliotece Boost
- Arytmetyka liczb wymiernych w czasie kompilacji
- Podsumowanie
- Struktury danych
- Rozdzia艂 13. Kontenery
- Kontenery sekwencyjne
- Kontenery array
- Kontenery vector
- Rzadziej u偶ywane kontenery sekwencyjne
- Kontenery asocjacyjne
- Kontener set
- Kontener multiset
- Kontener map
- Rzadziej u偶ywane kontenery asocjacyjne
- Grafy i drzewa w艂a艣ciwo艣ci
- Biblioteka Boost Graph Library
- Drzewa w艂a艣ciwo艣ci w bibliotece Boost
- Kontener initializer_list
- Podsumowanie
- 膯wiczenia
- Kontenery sekwencyjne
- Rozdzia艂 14. Iteratory
- Kategorie iterator贸w
- Iteratory wyj艣ciowe
- Iteratory wej艣ciowe
- Iteratory post臋puj膮ce
- Iteratory dwukierunkowe
- Iteratory o dost臋pie swobodnym
- Iteratory ci膮g艂e
- Iteratory mutowalne
- Pomocnicze funkcje iterator贸w
- Funkcja std::advance
- Funkcje std::next i std::prev
- Funkcje std::distance
- Funkcje std::iter_swap
- Dodatkowe adaptery iterator贸w
- Adaptery iterator贸w przenosz膮cych
- Adaptery iterator贸w wstecznych
- Podsumowanie
- Kategorie iterator贸w
- Rozdzia艂 15. 艁a艅cuchy
- Typ std::string
- Konstruowanie
- Zarz膮dzanie pami臋ci膮 i optymalizacje niewielkich 艂a艅cuch贸w
- Dost臋p do element贸w i iterator贸w
- Por贸wnywanie 艂a艅cuch贸w
- Przetwarzanie element贸w
- Wyszukiwanie
- Konwersje numeryczne
- Widok na 艂a艅cuch
- Konstruowanie
- Operacje wspierane przez klas臋 string_view
- Prawa w艂asno艣ci, u偶ycie i wydajno艣膰
- Wyra偶enia regularne
- Wzorce
- Klasa basic_regex
- Algorytmy
- Algorytmy zwi膮zane z 艂a艅cuchami dost臋pne w pakiecie Boost
- Zakresy biblioteki Boost
- Predykaty
- Klasyfikatory
- Wyszukiwacze
- Algorytmy modyfikuj膮ce
- Dzielenie i 艂膮czenie
- Wyszukiwanie
- Tokenizer z pakietu Boost
- Lokalizacje
- Podsumowanie
- Typ std::string
- Rozdzia艂 16. Strumienie
- Strumienie
- Klasy strumieni
- Stan strumienia
- Buforowanie i opr贸偶nianie bufora
- Manipulatory
- Typy zdefiniowane przez u偶ytkownika
- Strumienie zwi膮zane z 艂a艅cuchami
- Strumienie plikowe
- Bufory strumieniowe
- Dost臋p swobodny
- Podsumowanie
- Strumienie
- Rozdzia艂 17. Systemy plik贸w
- Poj臋cia dotycz膮ce systemu plik贸w
- Klasa std::filesystem::path
- Tworzenie 艣cie偶ek
- Dzielenie 艣cie偶ek na cz臋艣ci sk艂adowe
- Modyfikowanie 艣cie偶ek
- Podsumowanie metod zwi膮zanych z systemem plik贸w dost臋pnych w klasie path
- Pliki i katalogi
- Obs艂uga b艂臋d贸w
- Funkcje tworz膮ce 艣cie偶k臋
- Sprawdzanie typ贸w plik贸w
- Sprawdzanie plik贸w i katalog贸w
- Modyfikowanie plik贸w i katalog贸w
- Iteratory katalog贸w
- Konstruowanie
- Elementy katalogu
- Rekurencyjne iterowanie po katalogach
- Wykorzystanie strumieni fstream
- Podsumowanie
- Rozdzia艂 18. Algorytmy
- Z艂o偶ono艣膰 obliczeniowa algorytm贸w
- Zasady wykonywania
- Operacje niemodyfikuj膮ce kolekcje
- Algorytm all_of
- Algorytm any_of
- Algorytm none_of
- Algorytm for_each
- Algorytm for_each_n
- Algorytmy find, find_if i find_if_not
- Algorytm find_end
- Algorytm find_first_of
- Algorytm adjacent_find
- Algorytmy count i count_if
- Algorytm mismatch
- Algorytm equal
- Algorytm is_permutation
- Algorytm search
- Algorytm search_n
- Operacje modyfikuj膮ce kolekcje
- Algorytm copy
- Algorytm copy_n
- Algorytm copy_backward
- Algorytm move
- Algorytm move_backward
- Algorytm swap_ranges
- Algorytm transform
- Algorytm replace
- Algorytm fill
- Algorytm generate
- Algorytm remove
- Algorytm unique
- Algorytm reverse
- Algorytm sample
- Algorytm shuffle
- Operacje zwi膮zane z sortowaniem
- Algorytm sort
- Algorytm stable_sort
- Algorytm partial_sort
- Algorytm is_sorted
- Algorytm nth_element
- Wyszukiwanie binarne
- Algorytm lower_bound
- Algorytm upper_bound
- Algorytm equal_range
- Algorytm binary_search
- Algorytmy oparte na podzia艂ach
- Algorytm is_partitioned
- Algorytm partition
- Algorytm partition_copy
- Algorytm stable_partition
- Algorytmy scalaj膮ce
- Algorytm merge
- Algorytmy warto艣ci ekstremalnych
- Algorytmy min i max
- Algorytmy min_element i max_element
- Algorytm clamp
- Operacje numeryczne
- Przydatne operatory
- Algorytm iota
- Algorytm accumulate
- Algorytm reduce
- Algorytm inner_product
- Algorytm adjacent_difference
- Algorytm partial_sum
- Inne algorytmy
- Biblioteka Boost Algorithm
- Rozdzia艂 19. Wsp贸艂bie偶no艣膰 i r贸wnoleg艂o艣膰
- Programowanie wsp贸艂bie偶ne
- Zadania asynchroniczne
- Wsp贸艂dzielenie i koordynacja
- Niskopoziomowe funkcje zwi膮zane ze wsp贸艂bie偶no艣ci膮
- Algorytmy r贸wnoleg艂e
- Przyk艂ad: sortowanie r贸wnoleg艂e
- Algorytmy r贸wnoleg艂e nie s膮 magiczne
- Podsumowanie
- Programowanie wsp贸艂bie偶ne
- Rozdzia艂 20. Programowanie sieciowe z u偶yciem biblioteki Boost Asio
- Model programowania biblioteki Boost Asio
- Programowanie sieciowe z u偶yciem biblioteki Asio
- Protok贸艂 internetowy
- Rozwi膮zywanie nazwy hosta
- Nawi膮zywanie po艂膮czenia
- Bufory
- Odczytywanie danych z bufor贸w i zapisywanie do nich
- Hypertext Transfer Protocol (HTTP)
- Implementacja prostego klienta HTTP za pomoc膮 biblioteki Boost Asio
- Asynchroniczne odczytywanie i zapisywanie
- Tworzenie serwera
- Wielow膮tkowo艣膰 biblioteki Boost Asio
- Podsumowanie
- Rozdzia艂 21. Tworzenie aplikacji
- Wsparcie programu
- Obs艂uga zako艅czenia programu i zwalniania zasob贸w
- Komunikacja z systemem operacyjnym
- Obs艂uga sygna艂贸w systemu operacyjnego
- Biblioteka Boost ProgramOptions
- Opis opcji
- Parsowanie opcji
- Przechowywanie opcji i dost臋p do nich
- Wykorzystanie zdobytej wiedzy
- Specyficzne zagadnienia zwi膮zane z kompilacj膮
- Przywitaj si臋 ponownie z preprocesorem
- Optymalizacje kompilatora
- Konsolidacja z j臋zykiem C
- Podsumowanie
- Wsparcie programu
- Rozdzia艂 10. Testowanie
- Przypisy