Jerzy Grebosz,
PASJA C++
Spis Tresci
Numery po tytule paragrafu - to numer strony. Pozwala to zorientowac
sie ile miejsca poswiecone jest danemu zagadnieniu.
1. Prosze nie czytac tego! 1
2. Szablony funkcji 6
- Potrzeba jest matka wynalazku 6
- Szablon w programowaniu 7
- Jak definiujemy szablon funkcji ? 8
- Nazewnictwo: parametr szablonu, argument funkcji szablonowej 11
- Wywolanie funkcji szablonowej 12
- Typ rezultatu sie nie liczy 14
- Co moze byc nazwa szablonu funkcji ? 15
- Czy mozna miec funkcje szablonowa dowolnego typu? 15
- Uklon szablonow funkcji w strone typow wbudowanych 18
- Deklaracja szablonu funkcji 20
- Interludium pierwsze - glos narratora 22
- Szablon moze tez miec wiecej parametrow 22
- Przyklad szablonu z dwoma parametrami 24
- Dwa szablony, jeden szczegolnym przypadkiem drugiego - konflikt 26
- Parametr szablonu uzyty w ciele szablonu 27
- Posluzenie sie adresem funkcji szablonowej 29
- Jak nie przestraszyc sie szablonu? 31
- Pierwsza proba - niewinny typ fundamentalny 31
- Druga proba ognia - typ pochodny: wskaznik 33
- Wreszcie zdefiniujemy szablon 34
- Szablon funkcji, a przydomki inline, static, extern 39
- Zegnajcie makrodefinicje 40
- Parametr na typ rezultatu funkcji 43
- Argument funkcji szablonowej - typu pochodnego od parametru szablonu
46
- Interludium drugie - glos narratora 47
- Obiekty statyczne w szablonie funkcji 47
- Szablon nie powinien korzystac ze zmiennych globalnych 50
- Funkcje specjalizowane 50
- Rozpoznawanie typu obiektu (RTTI) 54
- Gdzie umiescic deklaracje funkcji specjalizowanej ? 59
- Szablony funkcji, a przeladowanie 61
- Przyklad programu, w ktorym zgodnie istnieja funkcje i szablony o tej
samej nazwie 64
- Dopasowanie w wypadku funkcji szablonowych 67
- Niedyskretny rzut oka na drugi etap dopasowywania 72
- Dopasowywanie wskaznikow funkcji 79
- Rozmieszczanie szablonow funkcji w plikach 80
3. Szablon klas - wiadomosci wstepne 85
- Wynika koniecznosc istnienia 85
- Definiowanie szablonu klas 92
- Prosty program z szablonem klas 96
- Dlaczego nie makrodefinicje? 98
- Nazwa szablonu klasy 103
- Co moze byc parametrem szablonu klasy 106
- Definiowanie funkcji skladowych szablonu klas 106
- Wywolanie konstruktora lub destruktora klasy szablonowej 112
- Kiedy kompilator siega po nasz szablon klas ? 113
- Definicja obiektu klasy szablonowej 113
- Definicja wskaznika mogacego pokazywac na obiekty klasy szablonowej
114
- Deklaracja funkcji zawierajaca nazwe klasy szablonowej 114
- Nazwa klasy szablonowej uzyta jako nazwa klasy podstawowej 115
- Ostroznie z referencja jako parametrem aktualnym 115
- Szablon funkcji korzystajacej z obiektow klasy szablonowej 120
- Obiekt klasy szablonowej skladnikiem innego szablonu klasy 124
- Zagniezdzenie definicji klasy w szablonie klas 126
- Skladniki statyczne w szablonie klas 129
- Jak rozmieszczac w plikach szablony klas? 136
4. Parametry szablonu klas 140
- Parametr bedacy nazwa typu 141
- Parametr szablonu klas bedacy stala doslowna typu calkowitego 142
- Parametr szablonu bedacy adresem jakiejs komorki w pamieci 146
- Parametr szablonu bedacy adresem obiektu 148
- Parametr szablonu klas bedacy adresem funkcji 151
- Parametr szablonu klasy bedacy adresem statycznego skladnika klasy
153
- Co nie moze byc parametrem aktualnym szablonu klas ? 157
- Typedef - czyli ulga przy zawilych zapisach 157
- Instrukcje typedef i enum w szablonie klas 160
- Dopasowanie funkcji, a szablony klas 167
5. Specjalizacja a szablon klas 170
- Specjalizowana wersja klasy szablonowej 170
- Specjalizacja funkcji skladowej szablonu klas 179
- Specjalizacja, a skladniki statyczne szablonu klas 181
6. Przyjazn a szablony klas 189
- Jeden wspolny przyjaciel 189
- Kazda klasa szablonowa ma swego osobistego przyjaciela 192
- Operatory << i >> zaprzyjaznione z szablonem klas 195
7. Dziedziczenie a szablony 205
- Definiowanie klasy zwyklej, ktorej jednym z rodzicow jest klasa szablonowa
206
- Definiowanie szablonu klas, ktorych klasa podstawowa jest zwykla klasa
209
- Szablon klas, ktore dziedzicza klase szablonowa 214
- Szablon klas, ktory dziedziczy inny szablon (a nie konkretna klase)
218
- Specjalizowana klasa szablonowa, dziedziczy zwykla klase 223
- Specjalizowana klasa szablonowa, dziedziczy inna klase szablonowa 226
- Niemozliwe sytuacje 231
8. Klasy pojemnikowe - Wektor 233
- Co to jest klasa pojemnikowa ? 233
- Prymitywny pojemnik na jeden przedmiot 234
- Pojemnik sekwencyjny na wiele obiektow 236
- Pojemnik typu wektor 236
- Pojemnik posredni i bezposredni 247
- Pojemnik typu wektor - realizacja szablonowa 249
- Zastosowanie specjalizowanej funkcji szablonowej 259
9. Pojemnik typu Lista 262
- Gra terenowa jako pojemnik typu: Lista 262
- Lista (laczona pojedynczo) 267
- Lista podwojnie laczona 285
10. Talia 302
- Budowa pojemnika typu talia 302
- O poszukiwaniu i straconym czasie 304 Tom II
11. Kolejka, Stos 309
- Podstawowe sposoby organizacji danych w pojemnikach 309
- Pojemnik typu: Stos 310
- Pojemnik typu: Kolejka 319
12. Itertory to jakby wskazniki 323
- Iteracja, czyli przegladanie listy 323
- Jak ocalic nasza milosc do pojemnikow ? 326
- Przyklad listy z iteratorami 328
- Funkcje skladowe upodabniajace iterator do wskaznika 348
- Operator przypisania dla iteratora 348
- Operatory porownania iteratorow : != oraz == 349
- Pozyteczny operator konwersji int 350
- Rodzaje iteratorow 351
- Iterator dla wstawiania 355
- Do czego jeszcze moga przydac sie iteratory? 365
13. Algorytmy i obiekty funkcyjne 366
- Algorytmy 366
- Obiekt funkcyjny, recepta na przyspieszenie 376
- Obiekt funkcyjny uzyty w algorytmie 385
- Zastosowanie obiektu funkcyjnego wobec pojemnika 391
14. Pojemnik kojarzacy: Zbior 394
- Pojemniki kojarzace 394
- Pojemnik typu zbior 396
15. Pojemnik kojarzacy: Mapa 415
- Juz starozytni Rzymianie... 415
- Przyklad pojemnika typu mapa 416
- Pojemnik typu slownik 435
- Standardowa biblioteka szablonow 439
16. Obsluga sytuacji wyjatkowych 440
- Wyprawa nieustraszonych 440
- Wykrycie sytuacji wyjatkowej - blok try, instrukcja throw 443
- Blok catch 445
- Wyprawa nieustraszonych jako program 446
- Co moze byc sytuacja wyjatkowa? 456
- Po co naprawde sa wyjatki? 458
- Pojedynek: wywolanie zwrotne kontra rzucenie wyjatku 459
- Wariant 1: Wywolanie zwrotne 459
- Wariant 2: Rzucenie wyjatku 460
- Kolejnosc blokow catch ma znaczenie 461
- Rzeka bez powrotu 463
- Jak zasymulowac "wracajacy" mechanizm obslugi wyjatku? 464
- Bloki try, catch mozna zagniezdzac 465
- Re-throw, powtorne rzucenie tego samego wyjatku 467
- Zakresy waznosci 468
- Cokolwiek by nie lecialo - lap to ! 470
- Czy mozna rzucic wyjatek w bloku catch ? 471
- Ktory blok catch nadaje sie do zlapania lecacego wyjatku? 476
- Porownanie dopasowania blokow catch z dopasowaniem wywolan funkcji
483
- Ustawienie sytuacji wyjatkowych w hierarchie 485
17. Odwiklanie stosu 497
- Wielkie sprzatanie 497
- Jak nie stracic kontaktu z obiektem z zapasu pamieci? 503
- Rzucanie wyjatku z argumentem automatycznym (a odwiklanie stosu) 506
- throw z argumentem nie-automatycznym 511
- Nie rzucajcie wyjatkow z destruktorow 515
- Wypadek w czasie pracy konstruktora 516
- Odwiklanie stosu, a tablica obiektow 522
18. Zdobywanie zasobow w warunkach wyjatkowych 525
- W krainie troskliwych programistow 525
- Na czym polega technika "zdobycie zasobu skojarzone z inicjalizacja"
? 527
- Kiedy zdobycie naprawde musi byc inicjalizacja? 537
- Zasoby bedace plikami 545
- Jesli uzywasz biblioteki stdio, to masz klopoty 545
- Zasoby z biblioteki iostream - wyklad o elegancji 550
19. Gdy nikt nie zlapie wyjatku... 553
- Funkcje biblioteczne exit i abort 553
- Funkcja terminate 554
- Funkcja uprzedza jakie moze rzucac wyjatki 559
- Wyjatki niespodziewane - unexpected() 561
- Zastosowanie techniki "zdobywanie zzasobow..." do sledzenia
nieoczekiwanych wyjatkow 567
- My oszukujemy, czy nas oszukuja 573
20. O wyjatkach uwagi ogolniejsze 577
- Wyjatki rzucane w sytuacjach wcale nie wyjatkowych 577
- Pojedynek dwu technik: zwracanie kodu bledu, contra rzucenie wyjatku
584
- Wspolpraca C i C++ przy przenoszeniu informacji o sytuacjach wyjatkowych
588
- Kiedy rzucac i kiedy lapac? 596
- Zlapanie wyjatku po to, by zwolnic zasoby 597
- Zlapanie wyjatku, gdy mozemy uzdrowic sytuacje wyjatkowa 597
- Zlapanie wyjatku, gdy celowym jest powiadomienie kogos o sytuacji 598
- Zlapanie wyjatku, by dodac jakichs informacji o sytuacji wyjatkowej
i rzucic wszystko dalej 598
21. Pasja C++, Coda (Poslowie) 600
22. Indeks 602