Obsah Poděkování (19) Úvod (21) Kapitola 1. Začínáme (31) - Učení se C ++ - co nás čeká? (31)
- Původ C ++ - krátká historie (32)
- Jazyk C (32)
- C Programovací filozofie (33)
- Změna v C ++ - objektově orientované programování
- C ++ a zobecněné programování
- Původ C ++
- Přenositelnost a normy (37)
- Rozvoj jazyků v číslech (38)
- Standardy C ++ v této knize
- Programovací mechanika (39)
- Psaní zdrojového kódu (40)
- Kompilace a konsolidace (41)
- Shrnutí (45)
Kapitola 2. Váš první program v C ++ 47 - C ++ začátek (47)
- Vlastnosti hlavní () funkce 49
- Komentáře v C ++ 51
- Preprocesor a iostream 52
- Názvy hlavičkových souborů (53)
- Jmenné prostory
- Datový výstup - cout (55)
- Formátování zdrojového kódu C ++ 57
- Příkazy v C ++ 59
- Prohlášení a proměnné
- Prohlášení o úkolu (61)
- Nový trik coutů (62)
- Další příkazy C ++
- Pomocí cin (63)
- Spojení s coutem
- cin a cout - třídy poprvé (64)
- Vlastnosti (66)
- Použití funkce, která vrací hodnotu (66)
- Varianty funkcí (69)
- Uživatelem definované funkce (70)
- Uživatelské funkce, které vracejí hodnotu
- Používání směrnice v programech s více funkcemi
- Shrnutí (76)
- Kontrolní otázky 77
- Programovací cvičení (77)
Kapitola 3. Data - Jednoduché proměnné
- Proměnná jména
- Typy celých čísel 81
- Krátký, int, dlouhý a dlouhý dlouhý
- Nepodepsané typy
- Výběr správného typu (89)
- Celočíselné literály
- Jak C ++ určuje typ konstanty? (91)
- Typ znaků - znaky a celá čísla malých písmen (92)
- Bool datový typ (100)
- Const kvalifikátor (100)
- Čísla s plovoucí desetinnou čárkou 101
- Psaní čísel s plovoucí desetinnou čárkou 102
- Datové typy s plovoucí desetinnou čárkou 103
- Konstanty s plovoucí desetinnou čárkou 105
- Klady a zápory pohyblivé řádové čárky 105
- C ++ aritmetické operátory 106
- Pořadí provozu - priority operátora a konektivita 107
- Variace na divizi 108
- Operátor modulo (110)
- Zadejte převody
- Automatická deklarace typu v C ++ 11 116
- Shrnutí (117)
- Kontrolní otázky 117
- Programovací cvičení (118)
Kapitola 4. Složité typy 121 - Souhrnné desky (122)
- Poznámky k programu (124)
- Inicializace polí 124
- Inicializace polí v C ++ 11 125
- Řetězy (126)
- Kombinace řetězcových literálů 127
- Řetězce v poli
- Problémy se zadáváním řetězců 129
- Čtení řetězců z řádků
- Hašování řetězců a čísel na vstupu 134
- Třída strun - úvod
- Inicializace řetězce v C ++ 11 136
- Přiřazení, zřetězení a přidání
- Další operace třídy String 138
- Řetězcová třída a vstup a výstup 139
- Další variace smyčcových literálů 141
- Struktury (142)
- Použití struktury v programu
- Inicializace struktur v C ++ 11 145
- Mohu ve struktuře použít pole řetězce? (146)
- Další vlastnosti struktur
- Pole struktur
- Bitová pole (149)
- Odbory (149)
- Typy výčtu
- Nastavení hodnot enumerátoru 153
- Rozsahy hodnot v typech výčtu
- Ukazatele a různé předměty (154)
- Deklarace a inicializace ukazatelů 156
- Nebezpečí ukazatelů 158
- Ukazatele a čísla (159)
- Použití nového operátora k přidělení paměti
- Uvolnění paměti pomocí funkce Odstranit 161
- Nové k vytvoření dynamických polí 162
- Ukazatele, pole a aritmetika ukazatele 165
- Souhrn informací o ukazatelích (168)
- Měřidla a řetězy (170)
- Nové k vytváření dynamických struktur 174
- Přidělení paměti: automatické, statické a dynamické
- Kombinace typů
- Různá pole (181)
- Vektorová šablona šablony 181
- Pole třídy šablony (C ++ 11) 182
- Porovnání polí s vektorem a polem 183
- Shrnutí (184)
- Kontrolní otázky 185
- Programovací cvičení (186)
Kapitola 5. Smyčky a relační výrazy 189 - Pro smyčky
- The Elements of a for Loop 191
- Vracíme se do smyčky for (196)
- Změna velikosti kroku 198
- The for Loop and Strings 198
- Operátory Increment (++) a decrement (-) 199
- Nežádoucí účinky a referenční hodnoty 200
- Předpona a přípona 201
- Operátory a ukazatele přírůstku a snížení 202
- Operátoři přiřazení sloučenin 203
- Složené výpisy nebo bloky 203
- Čárka jako operátor (a některé triky syntaxe) 205
- Relační výrazy 208
- Atribuce, srovnání a chyby
- Srovnání strun ve stylu C 210
- Porovnání řetězcových objektů 213
- While Loop 213
- Poznámky k programu (215)
- Smyčka for a while 216
- Počkejte minutu - vytváříme zpožďovací smyčku (217)
- Proveďte smyčku 219
- Rozsah pro smyčky (C ++ 11) 221
- Smyčky a zadávání textu 221
- Nejjednodušší verze cin (222)
- cin.get (char) na pomoc (223)
- Která verze cin.get () je lepší? (224)
- Konec souboru (224)
- Ještě další verze cin.get () 227
- Vnořené smyčky a 2D pole
- Inicializace dvourozměrných polí 232
- Použití dvourozměrných polí 232
- Shrnutí (234)
- Kontrolní otázky 234
- Programovací cvičení (235)
Kapitola 6. Podmíněné příkazy a logické operátory 237 - Prohlášení if 237
- Pokud jinde 239
- Formátování příkazu if else 241
- If else if else construction (241)
- Logické výrazy 243
- Logický alternativní operátor - || (243)
- Operátor logické spojky - && (245)
- Rozsah s && operátorem 247
- Operátor logické negace -! (248)
- O logických operátorech 250
- Alternativní notace 251
- Knihovna cctype
- Provozovatel ?: (253)
- Příkaz switch (255)
- Používání enumerátorů jako štítků 258
- přepnout oproti jinému (259)
- Přerušte a pokračujte 250
- Poznámky k programu (261)
- Smyčky čtecí čísla 262
- Poznámky k programu (264)
- Simple File I / O 265
- Textové I / O a textové soubory 265
- Zápis do textového souboru 267
- Čtení dat z textového souboru 270
- Shrnutí (274)
- Kontrolní otázky 275
- Programovací cvičení (276)
Kapitola 7. Funkce - programové komponenty C ++ 279 - Funkce na první pohled
- Definování funkce 281
- Prototypování a vyvolání funkcí
- Funkční parametry a předávání hodnotou
- Více parametrů
- Jedna další binární funkce 289
- Funkce a pole 291
- Jak ukazatele vytvářejí funkce, které zpracovávají pole? (292)
- Účinky použití polí jako parametrů 293
- Další příklady funkcí a polí
- Funkce využívající obory pole 301
- Konstantní ukazatele a modifikátor 302
- Dvourozměrné funkce a pole 306
- Funkce a řetězce C-Style 307
- Funkce s řetězci ve stylu C jako parametry 307
- Funkce, které vracejí řetězce ve formátu C.
- Funkce a struktury 310
- Předávání a vracení struktur 311
- Další příklad použití funkcí a struktur 312
- Předání adresy struktury 317
- Funkce a objekty třídy řetězce 318
- Pole Funkce a objekty 320
- Poznámky k programu (321)
- Rekurze (322)
- Rekurze jednoho hovoru 322
- Rekurze napříč několika hovory
- Ukazatele na funkce
- Ukazatele na funkce - základy
- Příklad použití ukazatelů na funkce
- Variace ukazatelů funkcí 329
- Zjednodušení přes typedef 333
- Shrnutí (333)
- Kontrolní otázky 334
- Programovací cvičení (336)
Kapitola 8. Funkce, pokročilá témata 339 - Vložené funkce 339
- Referenční proměnné
- Vytvoření referenční proměnné 342
- Odkazy jako funkční parametry 345
- Referenční vlastnosti
- Použití reference na strukturu 352
- Používání odkazů s objekty 358
- Objekty znovu - objekty, dědičnost a reference 361
- Kdy použít odkazy jako parametry? (364)
- Výchozí parametry (365)
- Poznámky k programu (366)
- Přetížení funkce 367
- Příklad přetížení funkce 370
- Kdy použít přetížení funkce? (372)
- Šablony funkcí (372)
- Přetížené šablony 375
- Omezení šablony
- Veřejné specializace (377)
- Konkretizace a specializace (380)
- Jakou verzi funkce kompilátor zvolí? (382)
- Vývoj funkčních šablon
- Shrnutí (392)
- Kontrolní otázky 392
- Programovací cvičení (393)
Kapitola 9. Paměťový model a jmenné prostory 397 - Nespojitá kompilace (397)
- Životnost, dosah a propojení (403)
- Rozsah a propojení
- Automatické přidělení (404)
- Statické proměnné 409
- Statické přidělení, vnější spojení
- Specifikátoři a kvalifikace
- Kombinace a funkce 421
- Propojení jazyků (422)
- Kategorie přiřazení a dynamické přiřazení
- Jmenné prostory 429
- Tradiční jmenné prostory C ++
- Nové mechanismy oboru názvů 431
- Příklad jmenných prostorů 438
- Budoucnost jmenných prostorů
- Shrnutí (442)
- Kontrolní otázky 442
- Programovací cvičení (445)
Kapitola 10. Předměty a třídy 447 - Procedurální programování a objektově orientované programování
- Třídy a abstrakce
- Co je to typ? (449)
- Třídy C ++
- Implementace třídních metod 455
- Používání tříd 459
- Změny implementace
- Souhrn známých zpráv (462)
- Konstruktéři a ničitelé 463
- Deklarace a definování konstruktérů 464
- Používání konstruktorů 465
- Výchozí konstruktory 466
- Destruktory (467)
- Vylepšení třídy akcií 468
- Shrnutí konstruktérů a destruktorů
- Identita objektu - tento indikátor
- Pole objektů
- Řada tříd (485)
- Konstanty rozsahu tříd (486)
- Výčet s vlastním rozsahem (C ++ 11) 487
- Abstraktní datové typy 488
- Shrnutí 492
- Kontrolní otázky 493
- Programovací cvičení (493)
Kapitola 11. Používání tříd 497 - Operátoři přetížení 498
- Jeden, dva, tři - pokus o přetížení operátorem (499)
- Další operátor sčítání (502)
- Omezení přetížení operátora
- Více o přetížení operátora 506
- Nejdůležitější přátelé (509)
- Prohlášení o přátelství 510
- Typické přátelství - přetížení operátora << (512)
- Přetížení operátora - metody versus jiné funkce
- Přetížení pokračovalo - Vektorová třída 519
- Komponenta kódující stav objektu (526)
- Přetížení aritmetických operátorů pro třídu Vector 528
- Poznámka k implementaci (530)
- Vector Random Walk 530
- Automatické převody a sesílání typu třídy 534
- O programu (539)
- Konverzní funkce 539
- Obrácení a přátelství (544)
- Shrnutí (547)
- Kontrolní otázky 549
- Programovací cvičení (549)
Kapitola 12. Třídy a dynamické přidělování paměti 553 - Třídy a dynamická paměť
- Dynamická kontrola paměti a členové statické třídy
- Metody speciální třídy
- Jaký je problém s konstruktorem kopírování ve Stringbadu? (565)
- Další slabé stránky Stringbad: Operátoři přiřazení
- Nová vylepšená třída - řetězec 571
- Nová verze výchozího konstruktoru 572
- Srovnání řetězců 573
- Indexování řetězce 574
- Metody statické třídy 575
- Další přetížení operátora přiřazení 576
- Co byste si měli pamatovat při použití new in constructor? (581)
- Doporučení a upozornění 582
- Kopírování členských objektů podle členů 583
- Několik slov o vracení předmětů
- Vrácení nemodifikovatelné (konstantní) reference objektu 584
- Vrácení upravitelného (Unconst) odkazu na objekt 585
- Vrácení objektu o hodnotu 585
- Vrácením o hodnotu neměnný objekt (const) 586
- Ukazatele objektu 587
- Více o nových a smazaných 589
- Souhrn ukazatelů na objekty 590
- Více o místní verzi nové (592)
- Přehled známých technik (596)
- Přetížení operátora << (596)
- Konverzní funkce 597
- Třídy využívající nové v konstruktorech
- Simulace fronty (598)
- Třída fronty (598)
- Třída klienta (609)
- Simulace ATM (612)
- Shrnutí (616)
- Kontrolní otázky 617
- Programovací cvičení (619)
Kapitola 13. Třídy a dědičnost 623 - Jednoduchá základní třída 624
- Dědičnost (626)
- Konstruktéři - problémy s úrovní přístupu 628
- Použití odvozené třídy 631
- Vztah mezi odvozenou třídou a základní třídou 633
- Dědičnost - vztah typu něco (635)
- Polymorfní veřejné dědictví (636)
- Vytváření tříd Brass a BrassPlus 637
- Statické a dynamické omezení 648
- Kompatibilita indikátorů a referenčních typů 648
- Virtuální metody a dynamická vazba 650
- Co potřebujete vědět o virtuálních metodách? (653)
- Řízení přístupu - Chráněná úroveň (656)
- Abstraktní základní třídy
- Používání abstraktních základních tříd 659
- Filozofie abstraktních základních tříd
- Dědičnost a dynamické přidělování paměti 665
- První případ - odvozená třída bez dynamického přidělování paměti
- Druhý případ - odvozená třída s dynamickým přidělením paměti 666
- Příklad dědičnosti pomocí dynamického přidělování paměti a funkcí přátel (668)
- Recenze designu učebny (673)
- Automaticky generované metody kompilátorem
- Jiné metody 675
- Veřejné dědictví (678)
- Souhrn metod třídy
- Shrnutí (683)
- Kontrolní otázky 683
- Programovací cvičení (684)
Kapitola 14. Opětovné použití kódu v C ++ 687 - Třídy s členy objektu
- Stručný popis třídy Valarray
- Student Class Project (689)
- Ukázková třída studentů
- Soukromé dědictví (697)
- Nová verze třídy Student (697)
- Vícenásobné dědictví
- Duplicitní pracovníci (711)
- Duální metody 714
- Kontrola vícenásobné dědičnosti 723
- Šablony tříd (724)
- Definování šablony třídy 724
- Použití šablony třídy 727
- Analýza šablony třídy
- Šablona pole a argumenty šablony 734
- Flexibilita šablony
- Specializace šablony
- Šablony jako komponenty (742)
- Šablony jako parametry (744)
- Šablony tříd a přátel (746)
- Aliasy typů šablon (C ++ 11) 752
- Shrnutí (753)
- Kontrolní otázky 755
- Programovací cvičení (757)
Kapitola 15. Přátelství, výjimky a další (763) - Přátelství (763)
- Přátelské třídy (764)
- Metody přátelské třídy
- Jiné přátelské vztahy (771)
- Vnořené třídy
- Přístup k vnořeným třídám 774
- Vnoření do šablony 776
- Výjimky (779)
- Volání přerušení () 779
- Vrácení chybového kódu (780)
- Mechanismus výjimek 782
- Výjimky objektu 784
- Specifikace výjimek a C ++ 11
- Odvíjení zásobníku 789
- Další vlastnosti výjimky
- Třída výjimek (796)
- Výjimky, třídy a dědičnost 799
- Problémy s výjimkami 804
- Buďte opatrní, až na výjimky (807)
- RTTI (808)
- Proč potřebujeme RTTI? (808)
- Jak funguje RTTI? (809)
- Operátoři odlévání typu
- Shrnutí (820)
- Zkontrolujte otázky 820
- Programovací cvičení (822)
Kapitola 16 Třída String a knihovna STL 823 - Řetězec třída
- Vytvoření řetězcového objektu 824
- Zadávání dat do řetězcových objektů 828
- Používání řetězcových objektů 830
- Co jiného nabízí třída strun? (835)
- Varianty třídy strun 837
- Šablony tříd Smart Pointer (837)
- Používání inteligentních ukazatelů 838
- Další informace o inteligentních indikátorech (841)
- Nadřazenost unique_ptr nad auto_ptr (844)
- Výběr inteligentního ukazatele (845)
- Knihovna STL (847)
- Šablona třídy 847 vektoru
- Vektorové metody
- Další možnosti třídy Vector 853
- Rozsah pro smyčky (C ++ 11) 857
- Zobecněné programování 858
- K čemu potřebuji iterátory? (858)
- Druhy iterátorů
- Hierarchie iterátorů
- Koncepty, přesnosti a modely (866)
- Typy kontejnerů (872)
- Asociativní kontejnery (881)
- Neuspořádané asociativní kontejnery (C ++ 11) 887
- Funkční objekty (funktory)
- Koncepty funktorů 888
- Předdefinované funktory 891
- Adaptabilní funktory a funkční adaptéry
- Algoritmy (895)
- Skupiny algoritmů 895
- Obecné vlastnosti algoritmů 896
- Knihovna STL a třída String
- Funkce a metody kontejneru 898
- Používání knihovny STL 899
- Ostatní knihovny (903)
- Třídy vektoru, valarray a pole (903)
- Šablona 908. Initializer_list (C ++ 11)
- Pomocí šablony initializer_list
- Poznámky k programu (911)
- Shrnutí (911)
- Zkontrolujte otázky 913
- Programovací cvičení (914)
Kapitola 17. Zacházení se vstupy, výstupy a soubory (917) - Obecné charakteristiky zpracování I / O v C ++ 918
- Proudy a vyrovnávací paměti
- Proudy a vyrovnávací paměti a soubor iostream 921
- Přesměrování (923)
- Provedení výstupu pomocí objektu cout (924)
- Přetížený operátor << (924)
- Další metody Ostream 927
- Vypláchnutí výstupní vyrovnávací paměti (930)
- Formátování výstupu pomocí cout 931
- Provedení operace vstupu pomocí objektu Cin (945)
- Jak operátor >> z cin "vidí" vstup? (947)
- Státy streamů
- Další metody Istream 953
- Další metody Istream 960
- Soubor I / O (964)
- Jednoduchý I / O souborů
- Stream Stream a metoda is_open () 968
- Otevírání více souborů (969)
- Zpracování argumentů příkazového řádku 969
- Režimy otevření souboru
- Náhodný přístup (981)
- Interní formátování 988
- Shrnutí (991)
- Zkontrolovat otázky 992
- Programovací cvičení (993)
Kapitola 18. Nový standard C ++ 997 - Souhrn položek C ++ 11 997
- Nové typy (997)
- Jednotná inicializace 998
- Prohlášení (999)
- nullptr (1001)
- Chytré ukazatele (1002)
- Změny specifikace výjimky (1002)
- Explicitní rozsah výčtu prvků
- Změny třídy (1003)
- Změny šablon a knihovny STL
- Odkazy na hodnotu R.
- Přenos sémantiky a referencí R-hodnota
- Potřeba sémantiky přenosu (1007)
- Příklad převodu 1008
- Závěry převaděče 1013
- Úkoly (1014)
- Vynucení pohybu (1015)
- Nové položky třídy (1018)
- Metody speciální třídy 1018
- Výchozí a odstraněné metody 1019
- Delegující konstruktéři 1021
- Dědičnost konstruktoru
- Správa virtuálních metod: přepsání a konečná (1023)
- Funkce lambda
- Ukazatele funkcí, funktory a lambdy
- Proč potřebujeme lambdy? (1027)
- Adaptéry (1030)
- Neúčinnost funkce adaptéru a šablony (1030)
- Opravit problém (1032)
- Další možnosti (1034)
- Šablony proměnných parametrů (1035)
- Balíčky parametrů a funkcí šablony
- Vybalení balíků (1036)
- Rekurze v šablonách proměnných parametrů
- Další vybavení C ++ 11 (1040)
- Souběžné programování 1040
- Doplňky knihovny (1040)
- Programování na nízké úrovni (1041)
- Jiný (1042)
- Změny jazyka (1042)
- Boost Project (1043)
- TR1 (1043)
- Používání knihoven Boost 1043
- Co bude dál? (1044)
- Shrnutí (1045)
- Kontrolní otázky 1046
- Programovací cvičení (1049)
Dodatek A Číselné systémy - Desetinná místa (základ 10) (1051)
- Osmičková celá čísla (základna 8) (1051)
- Šestnáctková čísla 1052
- Binární čísla (základna 2) 1052
- Binární vs hexadecimální (1053)
Dodatek B Rezervovaná slova C ++ 1055 - Klíčová slova C ++ 1055
- Alternativní lexémy
- Vyhrazená jména knihoven C ++
- Identifikátory se zvláštním významem (1057)
Dodatek C Sada znaků ASCII (1059) Dodatek D Priority operátora Dodatek E Ostatní operátoři - Bitové operátory 1067
- Operátoři směny 1067
- Bitové logické operátory
- Alternativní zastoupení bitových operátorů
- Některé běžné techniky využívající bitové operátory 1072
- Provozovatelé dereferencování členů
- alignof (C ++ 11) (1077)
- noexcept (C ++ 11) (1078)
Příloha F Třída šablony řetězců - Třináct typů a konstanta (1080)
- Údaje, konstruktéři a různé údaje (1080)
- Výchozí konstruktor (1083)
- Konstruktéři pracující na klasických C strunách
- Fragment konstruktory pro C-struny
- Konstruktéři pracující na referenční hodnotě L 1084
- Konstruktéři pracující na referenční hodnotě R (C ++ 11) 1085
- Konstruktory používající n kopií postavy (1086)
- Konstruktéři oboru 1086
- Konstruktor seznamu inicializace (C ++ 11) 1086
- Metody správy paměti 1087
- Řetězový přístup (1087)
- Jednoduché přiřazení 1088
- Hledání řetězců (1089)
- Rodina funkcí find () 1089
- Rodina rfind () 1089
- Find_first_of () Family 1090
- Rodina find_last_of () 1090
- Rodina funkcí find_first_not_of () 1091
- Find_last_not_of () Rodina 1091
- Metody a funkce porovnání 1091
- Řetězové modifikátory (1093)
- Metody připojení a přidání 1093
- Další metody přiřazení 1094
- Metody vložení 1094
- Metody odstranění 1095
- Metody výměny 1095
- Další metody úprav: copy () a swap () 1096
- Vstup a výstup (1096)
Dodatek G Metody a funkce z knihovny STL 1099 - STL vs C ++ 11 (1099)
- Nové kontejnery (1099)
- Změny kontejnerů C ++ 98 (1100)
- Společné komponenty pro všechny (nebo většinu) kontejnerů (1101)
- Další členové pro sekvenční kontejnery (1104)
- Další sklizňové a mapové operace (1107)
- Unordering Associative Containers (C ++ 11) 1109
- Funkce STL
- Neměnné sekvenční operace 1111
- Mutování sekvenčních operací 1116
- Třídění a související operace 1125
- Počet operací 1139
Dodatek H Vybrané knihy a online zdroje (1141) - Vybrané knihy (1141)
- Internetové zdroje (1142)
Dodatek I Přizpůsobení se ANSI / ISO C ++ (1145) - Zabránění zneužití určitých směrnic o preprocesoru
- Pro definování konstant je lepší použít modifikátor const než #define (1145).
- Je lepší použít inline specifikátor k definování malých funkcí než makro #define (1147).
- Používání funkčních prototypů 1148
- Použití Type Cast 1148
- Učení a používání mechanismů jazyka C ++ 1149
- Používání nové organizace pro hlavičkové soubory 1149
- Používání jmenných prostorů
- Používání inteligentních ukazatelů (1150)
- Použití třídy String
- Používání STL (1151)
Dodatek J. Odpovědi na otázky týkající se sebehodnocení 1153 Rejstřík (1179) |