Recenzja książki Symfonia C++ Standard! Jerzy Grębosz
  Menu główne
  Linki
Symfonia C++ Standard - spis treści tom2

Zamów symfonię!

TOM 2

13 Struktury, Unie, Pola bitowe
13.1 Struktura
13.2 Unia
13.2.1 Inicjalizacja unii
13.2.2 Unia anonimowa
13.3 Pola bitowe
13.4 Unia i pola bitowe – upraszczają rozpakowanie słów
13.5 Ćwiczenia

14 Klasa zagnieżdżona lub lokalna
14.1 Zagnieżdżona definicja klasy
14.2 Lokalna definicja klasy
14.3 Lokalne nazwy typów
14.4 Ćwiczenia

15 Konstruktory i Destruktory
15.1 Konstruktor
15.1.1 Przykład programu zawierającego klasę z konstruktorami
15.2 Specyfikator (przydomek) explicit
15.3 Kiedy i jak wywoływany jest konstruktor
15.3.1 Konstruowanie obiektów lokalnych
15.3.2 Konstruowanie obiektów globalnych
15.3.3 Konstrukcja obiektów tworzonych operatorem new
15.3.4 Jawne wywołanie konstruktora
15.3.5 Dalsze sytuacje, gdy pracuje konstruktor
15.4 Destruktor
15.5 Konstruktor domniemany
15.6 Lista inicjalizacyjna konstruktora
15.7 Konstrukcja obiektu, którego składnikiem jest obiekt innej klasy
15.8 Konstruktory nie-publiczne ?
15.9 Konstruktor kopiujący (albo inicjalizator kopiujący)
15.9.1 Przykład klasy z konstruktorem kopiującym
15.9.2 Dlaczego przez referencję?
15.9.3 Jak dostać piątkę z C++ ?
15.9.4 Konstruktor kopiujący gwarantujący nietykalność
15.9.5 Współodpowiedzialność
15.9.6 Konstruktor kopiujący generowany automatycznie
15.9.7 Kiedy konstruktor kopiujący jest niezbędny?
15.10 Ćwiczenia

16 Tablice obiektów
16.1 Tablica obiektów definiowana operatorem new
16.2 Inicjalizacja tablic obiektów
16.2.1 Inicjalizacja tablic obiektów będących agregatami
16.2.2 Inicjalizacja tablic nie będących agregatami
16.2.3 Inicjalizacja tablic tworzonych w zapasie pamięci
16.3 Ćwiczenia

17 Wskaźnik do składników klasy
17.1 Wskaźniki zwykłe – repetytorium
17.2 Wskaźnik do pokazywania na składnik-daną
17.2.1 Przykład zastosowania wskaźników do składników klasy
17.3 Wskaźnik do funkcji składowej
17.3.1 Zastosowanie wskaźników do funkcji składowych
17.4 Tablica wskaźników do danych składowych klasy
17.5 Tablica wskaźników do funkcji składowych klasy
17.6 Wskaźniki do składników statycznych
17.7 Ćwiczenia

18 Konwersje
18.1 Sformułowanie problemu
18.2 Konstruktory konwertujące
18.2.1 Kiedy jawnie, kiedy niejawnie
18.2.2 Przykład konwersji konstruktorem
18.3 Funkcja konwertująca – operator konwersji
18.3.1 Na co konwertować nie można
18.4 Który wariant konwersji wybrać ?
18.5 Sytuacje, w których zachodzi konwersja
18.6 Zapis jawnego wywołania konwersji typów
18.6.1 Advocatus zapisu przypominającego: „wywołanie funkcji“
18.6.2 Advocatus zapisu: „rzutowanie“
18.7 Niecałkiem pasujące argumenty, czyli konwersje przy dopasowaniu
18.8 Kilka rad dotyczących konwersji
18.9 Ćwiczenia

19 Przeładowanie operatorów
19.1 Przeładowanie operatorów – definicja i trochę teorii
19.2 Moje zabawki
19.3 Funkcja operatorowa jako funkcja składowa
19.4 Funkcja operatorowa nie musi być przyjacielem klasy
19.5 Operatory predefiniowane
19.6 Argumentowość operatorów
19.7 Operatory jednoargumentowe
19.8 Operatory dwuargumentowe
19.8.1 Przykład na przeładowanie operatora dwuargumentowego
19.8.2 Przemienność
19.8.3 Choć operatory inne, to nazwę mają tę samą
19.9 Przykład zupełnie nie matematyczny
19.10 Cztery operatory, które muszą być niestatycznymi funkcjami składowymi
19.11 Operator przypisania =
19.11.1 Przykład na przeładowanie operatora przypisania
19.11.2 Jak konieczność istnienia operatora przypisania – opowiedzieć potocznie?
19.11.3 Kiedy op er a tor przypisania nie jest generowany automatycznie
19.12 Operator [ ]
19.13 Operator ( )
19.14 Operator –>
19.14.1 „Zręczny wskaźnik“ – wykorzystuje przeładowanie właśnie tego operatora .852
19.15 Operatory new, new[]
19.15.1 Przykład przeładowania operatora new
19.15.2 Przykład przeładowania operatora new[]
19.16 Operatory delete, delete[]
19.16.1 Prosty przykład przeładowania delete
19.16.2 Prosty przykład przeładowania delete[]
19.17 Program przykładowy na zastosowanie operatorów new, delete
19.18 Przeładowanie globalnych operatorów new, new[], delete, delete[]
19.19 Operatory postinkrementacji i postdekrementacji, czyli koniec z niesprawiedliwością
19.20 Rady praktyczne dotyczące przeładowania
19.21 Pojedynek: Operator jako funkcja składowa, czy globalna
19.22 Zasłona spada, czyli tajemnica operatora <<
19.23 Rzut oka wstecz
19.24 Ćwiczenia

20 Dziedziczenie
20.1 Istota dziedziczenia
20.2 Dostęp do składników
20.2.1 Prywatne składniki klasy podstawowej
20.2.2 Nieprywatne składniki klasy podstawowej
20.2.3 Klasa pochodna też decyduje
20.2.4 Deklaracja dostępu using – czyli udostępnianie wybiórcze
20.3 Czego się nie dziedziczy
20.3.1 "Nie dziedziczenie" konstruktorów
20.3.2 "Nie dziedziczenie" operatora przypisania
20.3.3 "Nie dziedziczenie" destruktora
20.4 Drzewo genealogiczne
20.5 Dziedziczenie – doskonałe narzędzie programowania
20.6 Kolejność wywoływania konstruktorów
20.7 Przypisanie i inicjalizacja obiektów w warunkach dziedziczenia
20.7.1 Klasa pochodna nie definiuje swojego operatora przypisania
20.7.2 Klasa pochodna nie definiuje swojego konstruktora kopiującego
20.7.3 Inicjalizacja i przypisywanie według obiektu wzorcowego będącego const
20.7.4 Definiowanie konstruktora kopiującego i operatora przypisania dla klasy pochodnej
20.8 Dziedziczenie od kilku "rodziców" (czyli wielokrotne)
20.8.1 Konstruktor klasy pochodnej przy wielokrotnym dziedziczeniu
20.8.2 Ryzyko wieloznaczności przy dziedziczeniu
20.8.3 Bliższe pokrewieństwo usuwa wieloznaczność
20.8.4 Poszlaki
20.9 Pojedynek: Dziedziczenie klasy, contra zawieranie obiektów składowych
20.10 Konwersje standardowe przy dziedziczeniu
20.10.1 Pan orama korzyści
20.10.2 Czego robić się nie opłaca
20.10.3 Tuzin samochodów nie jest rodzajem tuzina pojazdów
20.10.4 Konwersje standardowe wskaźnika do składnika klasy
20.11 Wirtualne klasy podstawowe
20.11.1 Publiczne i prywatne dziedziczenie tej samej klasy wirtualnej
20.11.2 Uwagi o konstrukcji i inicjalizacji w przypadku klas wirtualnych
20.11.3 Dominacja klas wirtualnych
20.12 Ćwiczenia

21 Funkcje wirtualne
21.1 Polimorfizm
21.2 Typy rezultatów różnych realizacji funkcji wirtualnej
21.3 Dalsze szczegóły
21.4 Wczesne i późne wiązanie
21.5 Kiedy dla wywołań funkcji wirtualnych, mimo wszystko, zachodzi wczesne wiązanie?
21.6 Kulisy białej magii, czyli: Jak to jest zrobione ?
21.7 Funkcja wirtualna, a mimo to inline
21.8 Pojedynek – funkcje przeładowane contra funkcje wirtualne
21.9 Klasy abstrakcyjne
21.10 Destruktor? to najlepiej wirtualny!
21.11 Co prawda, konstruktor nie może być wirtualny, ale...
21.12 Rzutowanie dynamic_cast jest dla typów polimorficznych
21.13 Wszystko, co najważniejsze
21.14 Finis coronat opus
21.15 Ćwiczenia

22 Operacje Wejścia/Wyjścia
22.1 Biblioteka iostream
22.2 Strumień
22.3 Strumienie zdefiniowane standardowo
22.4 Operatory >> i <<
22.5 Domniemania w pracy strumieni zdefiniowanych standardowo
22.6 Uwaga na priorytet
22.7 Operatory << oraz >> definiowane przez użytkownika
22.7.1 Operatorów wstawiania i wyjmowania ze strumienia – nie dziedziczy się
22.7.2 Operatory wstawiania i wyjmowania nie mogą być wirtualne. Niestety.
22.8 Sterowanie formatem
22.9 Flagi stanu formatowania
22.9.1 Znaczenie poszczególnych flag sterowania formatem
22.10 Sposoby zmiany trybu (reguł) formatowania
22.10.1 Zmiana sposobu formatowania funkcjami setf, unsetf
22.10.2 Dodatkowe funkcje do zmiany parametrów formatowania
22.11 Manipulatory
22.11.1 Ma nip u la tory bezargumentowe
22.11.2 Ma nip u la tory parametryzowane
22.11.3 Definiowanie swoich manipulatorów
22.11.4 Ma nip u la tor jako funkcja
22.11.5 Definiowane manipulatora z parametrem
22.12 Nieformatowane operacje wejścia/wyjścia
22.13 Omówienie funkcji wyjmujących ze strumienia
22.13.1 Funkcje do pracy ze znakami i stringami
22.13.2 Wczytywanie binarne – funkcje read i readsome
22.13.3 Funkcja ignore
22.13.4 Pożyteczne funkcje pomocnicze
22.13.5 Funkcje wstawiające do strumienia
22.14 Strumienie płynące do lub od plików
22.14.1 Otwieranie i zamykanie strumienia
22.15 Błędy w trakcie pracy strumienia
22.15.1 Flagi stanu błędu strumienia
22.15.2 Funkcje do pracy na flagach błędu
22.15.3 Kilka udogodnień
22.15.4 Ustawianie i kasowanie flag błędu strumienia
22.15.5 Trzy plagi – czyli „gotowiec”, jak radzić sobie z błędami
22.16 Przykład programu pracującego na plikach
22.17 Strumienie, a technika rzucania wyjątków
22.18 Wybór miejsca czytania lub pisania w pliku
22.18.1 Funkcje składowe informujące o pozycji wskaźników
22.18.2 Wybrane funkcje składowe do pozycjonowania wskaźników
22.19 Pozycjonowanie w przykładzie większego programu
22.20 Tie – harmonijna praca dwóch strumieni
22.21 Dlaczego tak nie lubimy biblioteki stdio?
22.22 Synchronizacja biblioteki iostream z biblioteką stdio
22.23 Strumień zapisujący do obiektu klasy string
22.23.1 Pro gram przykładowy ilustrujący użycie klasy ostringstream
22.24 Strumień czytający z obiektu klasy string
22.24.1 Prosty przykład użycia strumienia istringstream
22.24.2 Wczytywanie argumentów wywoływania programu
22.25 Ożenek: strumień stringstream – czytający i zapisujący do stringu
22.25.1 Przykładowy pro gram posługujący się klasą stringstream
22.26 Ćwiczenia

23 Projektowanie programów orientowanych obiektowo
23.1 Przegląd kilku technik programowania
23.1.1 Programowanie liniowe
23.1.2 Programowanie proceduralne (czyli "orientowane funkcyjnie")
23.1.3 Programowanie z ukrywaniem danych
23.1.4 Programowanie obiektowe – programowanie „bazujące“ na obiektach
23.1.5 Programowanie Obiektowo Orientowane (OO)
23.2 O wyższości programowania obiektowo orientowanego nad Świętami Wielkiej Nocy
23.3 Obiektowo Orientowane: Projektowanie
23.4 Praktyczne wskazówki dotyczące projektowania programu techniką OO
23.4.1 Rekonesans – czyli rozpoznanie zagadnienia
23.4.2 Faza projektowania
23.4.3 Etap 1: Identyfikacja zachowań systemu
23.4.4 Etap 2: Identyfikacja obiektów (klas obiektów)
23.4.5 Etap 3: Usystematyzowanie klas obiektów
23.4.6 Etap 4: Określenie wzajemnych zależności klas
23.4.7 Etap 5: Składanie modelu. Określanie sekwencji działań obiektów i cykli życiowych
23.5 Faza implementacji
23.6 Przykład projektowania
23.7 Faza: Rozpoznanie naszego zagadnienia
23.8 Faza: Projektowanie
23.8.1 Etap 1 – Identyfikacja zachowań naszego systemu
23.8.2 Etap 2 – Identyfikacja klas obiektów, z którymi mamy do czynienia
23.8.3 Etap 3 – Usystematyzowanie klas obiektów z występujących w naszym systemie
23.8.4 Etap 4 – Określenie wzajemnych zależności klas
23.8.5 Etap 5 – Składamy model naszego systemu
23.9 Implementacja modelu naszego systemu
23.10 Symfonia C++, Coda
23.11 Posłowie

Dodatki:
A Dodatek: Systemy liczenia
A.1 Dlaczego komputer nie liczy tak jak my?
A.2 System szesnastkowy (heksadecymalny)
A.3 Ćwiczenia
Skorowidz

Zamów symfonię!

darmowe szablony