Sadržaj
(kliknite mišem na naslove pojedinih poglavlja da se prikaže sadržaj)
1. To C++ or not to C++? ... 1
1.1. Povijesni pregled razvoja programskih jezika ... 1
1.2. Osnovna svojstva jezika C++ ... 3
1.3. Usporedba s C-om ... 6
1.4. Usporedba s Javom ... 9
1.4.1. Java je potpuno objektno orijentirani programski jezik ... 9
1.4.2. Java izvedbeni kôd može se izvoditi na bilo kojem računalu ... 9
1.4.3. Java nema pokazivača ... 10
1.4.4. Java nema višestrukog nasljeđivanja ... 11
1.4.5. Java ima ugrađeni sustav za automatsko upravljanjem memorijom ... 11
1.4.7. Java ne podržava preopterećenje operatora ... 12
1.4.8. U Javi su operacije s decimalnim brojevima lošije podržane ... 12
1.4.9. Java ima na raspolaganju ogromnu biblioteku klasa ... 12
1.4.10. Java je jezik u “vlasništvu” jedne tvrtke ... 13
1.5. Usporedba s jezikom C♯ ... 13
1.6. Ima li smisla učiti jezik C++? ... 13
1.7. Zašto primjer iz knjige ne radi na mom računalu? ... 14
1.8. Literatura ... 15
1.9. Zahvale ... 16
1.9.1. Zahvale uz drugo i treće izdanje ... 16
2. Vrijeme je da se krene... 17
2.1. Što je program i kako ga napisati ... 17
2.2. Boj ne bije svjetlo oružje, već srce u junaka ... 21
2.2.1. Integrirana razvojna okolina ... 21
2.2.2. Prevoditelj i povezivač ... 22
2.2.3. Program za uređivanje teksta ... 22
2.2.4. Program za otkrivanje pogrešaka ... 22
2.3. Moj prvi i drugi C++ program ... 22
2.4. Moj treći C++ program ... 30
2.5. Komentari ... 32
2.6. Rastavljanje naredbi ... 35
2.7. Upravljanje slijedom izvođenja programa ... 37
2.8. Korisnički definirani tipovi ... 40
3. Osnovni tipovi podataka ... 45
3.1. Identifikatori ... 45
3.2. Varijable, objekti i tipovi ... 48
3.2.1. Deklaracija ... 48
3.2.2. Inicijalizacija ... 49
3.2.3. Neinicijalizirane varijable ... 52
3.3. Operator pridruživanja ... 53
3.4. Tipovi podataka i operatori ... 55
3.4.1. Brojevi ... 55
3.4.2. Aritmetički operatori ... 63
3.4.3. Operator dodjele tipa ... 70
3.4.4. Dodjeljivanje tipa brojčanim konstantama ... 72
3.4.5. Simboličke konstante ... 73
3.4.6. Konstante definirane konstantnim izrazima ... 75
3.4.7. Kvalifikator volatile
... 76
3.4.8. Logički tipovi i operatori ... 77
3.4.9. Poredbeni operatori ... 79
3.4.10. Znakovi ... 81
3.4.11. Operatori pridruživanja (2 ½) ... 86
3.4.12. Alternativne oznake operatora ... 87
3.4.13. Deklaracija auto
i operator decltype
... 88
3.4.14. Korisnički definirani tipovi i operatori ... 90
3.4.15. Pseudonimi tipova ... 91
3.5. Operator sizeof
... 93
3.6. Operator razdvajanja ... 94
3.7. Hijerarhija i redoslijed izvođenja operatora ... 95
3. Naredbe za kontrolu toka programa ... 101
4.1. Blokovi naredbi ... 101
4.2. Naredbe za grananje toka ... 103
4.2.1. Naredba if
... 103
4.2.2. Uvjetni operator ? :
... 110
4.2.3. Naredba switch
... 111
4.3. Naredbe za ponavljanje ... 119
4.3.1. Petlja for
... 119
4.3.2. Naredba while
... 126
4.3.3. Blok do-while
... 129
4.3.4. Slijedna naredba for
... 134
4.3.5. Naredbe za prekid petlje ... 135
4.4. Naredbe za bacanje i obradu iznimki ... 139
4.4.1. Bacanje iznimke ... 139
4.4.2. Hvatanje i obrada iznimke ... 141
4.5. Ostale naredbe za skok ... 147
4.6. O strukturiranju izvornog kôda ... 148
4.7. Kutak za buduće C++ „gurue” ... 150
5. Nizovi podataka ... 155
5.1. Ugrađeni nizovi podataka ... 155
5.1.1. Jednodimenzionalni nizovi ... 155
5.1.2. Dvodimenzionalni nizovi ... 163
5.2. Znakovni nizovi ... 170
5.2.1. Sirovi nizovi ... 173
5.2.2. Kodiranja znakovnih nizova ... 175
5.3. Spremnici ... 177
5.3.1. Klasa vector ... 178
5.3.2. Klasa string ... 182
5.4. Iteratori ... 188
6. Pokazivači i reference ... 191
6.1. Pokazivači ... 191
6.1.1. Koja korist od pokazivača ako samo izazivaju probleme? ... 197
6.1.2. Nul-pokazivači ... 199
6.1.3. Kamo sa zvijezdom (petokrakom) ... 205
6.1.4. Tajna veza između pokazivača i nizova ... 206
6.1.5. Nepromjenjivi znakovni nizovi ... 209
6.1.6. Nizovi znakovnih nizova ... 210
6.1.7. Aritmetičke operacije s pokazivačima ... 212
6.1.8. Nepromjenjivi pokazivači i pokazivači na nepromjenjive objekte ... 216
6.2. Reference ... 219
6.3. Razlika između referenci i pokazivača ... 222
6.4. Dinamička alokacija objekata ... 225
6.4.1. Dinamička alokacija nepromjenjivih objekata ... 228
7. Jednostavni korisnički definirani tipovi ... 229
7.1. Pobrojenja ... 229
7.1.1. Pobrojenja neograničenog dosega ... 232
7.2. Strukture ... 233
7.2.1. Definicija strukture ... 233
7.2.2. Inicijalizacija i dohvaćanje članova ... 235
7.2.3. Bezimene strukture ... 238
7.2.4. Ugniježđene strukture ... 238
7.3. Unije ... 240
7.3.1. Bezimene i anonimne unije ... 243
7.3.2. Program za izračunavanje izraza ... 244
7.4. Rukovanje pojedinačnim bitovima ... 248
7.4.1. Bitovni operatori ... 248
7.4.2. Polja bitova ... 255
8. Funkcije ... 257
8.1. Što su i zašto koristiti funkcije ... 257
8.2. Deklaracija i definicija funkcije ... 259
8.2.1. Deklaracije funkcija u datotekama zaglavlja ... 262
8.3. Tip funkcije ... 265
8.3.1. Automatsko određivanje povratnog tipa ... 268
8.4. Lista argumenata ... 268
8.4.1. Funkcije bez argumenata ... 268
8.4.2. Prijenos argumenata po vrijednosti ... 269
8.4.3. Referenca kao argument ... 272
8.4.4. Pokazivač kao argument ... 275
8.4.5. Konstantni argumenti ... 278
8.4.6. Promjena pokazivača unutar funkcije ... 281
8.4.7. Ugrađeni nizovi kao argumenti ... 287
8.4.8. Podrazumijevani argumenti ... 292
8.4.9. Funkcije s promjenjivim brojem argumenata ... 295
8.5. Pokazivači i reference kao povratne vrijednosti ... 300
8.6. void*
kao argument i povratna vrijednost funkcije ... 305
8.7. Dojava pogreške u funkciji ... 307
8.8. Život jednog objekta ... 311
8.8.1. Lokalni objekti ... 311
8.8.2. Globalni objekti ... 312
8.8.3. Statički objekti u funkcijama ... 316
8.9. Umetnute funkcije ... 318
8.10. Preopterećenje funkcija ... 319
8.11. Rekurzija ... 326
8.12. Funkcije kao konstantni izrazi ... 328
8.13. Pokazivači na funkcije ... 331
8.14. Funkcija main()
... 338
8.15. Standardne funkcije ... 341
8.15.1. Funkcije za rukovanje znakovnim nizovima ... 343
8.15.2. Funkcija exit()
... 348
8.16. Predlošci funkcija ... 349
8.16.1. Prateća deklaracija povratnog tipa ... 352
8.17. Pogled na funkcije „ispod haube” ... 354
8.18. Kako pisati funkcionalne funkcije ... 356
8.18.1. Funkcije doprinose modularnosti i olakšavaju testiranje ... 356
8.18.2. Ova funkcija sadrži samo n-naredbi ... 357
8.18.3. Izbjegavati preduboka i nepotrebna gniježđenja ... 357
8.18.4. Koristiti već provjerene funkcije ... 360
8.18.5. Imena funkcije i argumenata ... 360
8.18.6. Argumenti i povratna vrijednost ... 361
8.18.7. Provjera argumenata i signalizacija pogreške ... 361
8.18.8. Princip dizajna prema ugovoru ... 362
8.18.9. Koristiti automatizirane testove za provjeru ispravnosti ... 365
8.18.10. Program za izračunavanje izraza 2 ... 366
9. Klase i objekti ... 373
9.1. Kako prepoznati klase? ... 373
9.2. Definicija klase ... 377
9.2.1. Podatkovni članovi ... 378
9.2.2. Dohvaćanje članova ... 379
9.2.3. Funkcijski članovi ... 381
9.2.4. Ključna riječ this ... 384
9.2.5. Umetnuti funkcijski članovi ... 386
9.2.6. Dodjela prava pristupa ... 387
9.2.7. Formiranje javnog sučelja korištenjem prava pristupa ... 390
9.2.8. Prijatelji klase ... 391
9.3. Deklaracija objekata klase ... 394
9.4. Stvaranje i uništavanje objekata ... 395
9.4.1. Konstruktor ... 395
9.4.2. Inicijalizacija dinamičkih članova ... 400
9.4.3. Delegiranje konstruktora ... 403
9.4.4. Redoslijed inicijalizacije članova ... 404
9.4.5. Inicijalizacija članova unutar definicije klase ... 406
9.4.6. Podrazumijevani konstruktor ... 409
9.4.7. Poziv konstruktora prilikom definiranja objekata ... 411
9.4.8. Konstruktor kopije ... 412
9.4.10. Konstruktor zadan konstantnim izrazom ... 417
9.4.11. Inicijalizacija referenci i konstantnih članova ... 418
9.4.12. Destruktor ... 420
9.4.13. Specijalni funkcijski članovi klase ... 423
9.4.14. Prava pristupa konstruktoru i destruktoru ... 424
9.4.15. Iznimke u konstruktoru i destruktoru ... 428
9.4.16. Globalni i statički objekti ... 429
9.5. Nizovi objekata ... 431
9.6. Konstantni funkcijski članovi ... 432
9.7. Funkcijski članovi deklarirani kao volatile
... 438
9.8. Statički članovi klase ... 439
9.8.1. Statički podatkovni članovi ... 439
9.8.2. Statički funkcijski članovi ... 444
9.9. Područje klase ... 446
9.9.1. Razlučivanje područja ... 448
9.10. Ugniježđene klase ... 450
9.11. Lokalne klase ... 454
9.12. Pokazivači na članove klase ... 455
9.12.1. Pokazivači na podatkovne članove ... 457
9.12.2. Pokazivači na funkcijske članove ... 460
9.13. Privremeni objekti ... 465
9.13.1. Eksplicitno stvoreni privremeni objekti ... 465
9.13.2. Privremeni objekti kod prijenosa argumenata u funkciju... 470
9.13.3. Privremeni objekti kod vraćanja vrijednosti ... 473
9.13.4. Konstruktor pomaka ... 478
9.14. Novi pogled na strukture i unije ... 482
9.14.1. Jesu li strukture isto što i klase? ... 482
9.14.2. Unije na speedu ... 483
9.15. Zašto moja klasa ne odlazi u raj? ... 485
9.15.1. Klasa nije struktura koja samo objedinjuje podatke ... 485
9.15.2. Jasno razdvojiti sučelje od implementacije ... 485
9.15.3. Klasa mora imati točno određeno područje odgovornosti ... 486
9.15.4. Voditi računa o skrivanju podataka ... 487
9.15.5. Izbjegavati (ne)prijatelje ... 487
9.15.6. Minimalno sučelje ... 487
9.15.7. Mjerila kvalitete apstrakcije ... 487
10. Nasljeđivanje i hijerarhija klasa ... 489
10.1. Ima li klasa bogatog strica u Ameriki? ... 489
10.2. Specificiranje nasljeđivanja ... 494
10.3. Pristup naslijeđenim članovima ... 501
10.4. Nasljeđivanje i prava pristupa ... 504
10.4.1. Zaštićeno pravo pristupa ... 504
10.4.2. Javne osnovne klase ... 505
10.4.3. Privatne osnovne klase ... 508
10.4.4. Zaštićene osnovne klase... 510
10.4.5. Posebne napomene o pravima pristupa ... 512
10.4.6. Uključivanje članova bazne klase ... 514
10.5. Nasljeđivanje i pripadnost ... 517
10.6. Inicijalizacija i uništavanje izvedenih klasa ... 519
10.7. Standardne pretvorbe i nasljeđivanje ... 523
10.8. Područje klase i nasljeđivanje ... 527
10.8.1. Razlika nasljeđivanja i preopterećenja ... 528
10.8.2. Ugniježđene klase i nasljeđivanje ... 528
10.9. Klase kao argumenti funkcija ... 530
10.9.1. Točno podudaranje tipova... 531
10.9.2. Standardne pretvorbe ... 531
10.9.3. Korisnički definirane pretvorbe ... 533
10.10. Principi polimorfizma ... 535
10.10.1. Virtualni funkcijski članovi ... 539
10.10.2. Poziv virtualnih funkcijskih članova ... 544
10.10.3. Čiste virtualne funkcije ... 547
10.10.4. Virtualni destruktori ... 548
10.10.5. Opuštanje povratnog tipa virtualnih funkcija ... 550
10.11. Onemogućavanje nasljeđivanja ... 552
10.12. Virtualne osnovne klase ... 553
10.12.1. Deklaracija virtualnih osnovnih klasa ... 555
10.12.2. Pristup članovima virtualnih osnovnih klasa ... 556
10.12.3. Inicijalizacija osnovnih virtualnih klasa ... 558
10.13. Kako dobro iskoristiti nasljedstvo ... 560
10.13.1. Nasljeđivati ili ne nasljeđivati? ... 560
10.13.2. Nasljeđivanje koristiti na ispravan način ... 570
10.13.3. Formiranje hijerarhije nasljeđivanja ... 570
10.13.4. Korištenje poliformizma i virtualni funkcijski članovi ... 571
10.13.5. Zaštita podatkovnih članova ... 573
11. Dinamička alokacija objekata ... 575
11.1. Zašto treba izbjegavati dinamičku alokaciju ... 575
11.1.1. Razlika između automatske i dinamičke alokacije ... 575
11.1.2. Što učiniti kada alokacija ne uspije ... 579
11.1.3. Problemi vezani uz nepravilnu dealokaciju ... 582
11.1.4. Vlasništvo nad pokazivačem ... 586
11.2. Pametni pokazivači ... 586
11.2.1. Pokazivač unique_ptr
... 587
11.2.2. Pokazivač shared_ptr
... 593
11.2.3. Pokazivač weak_ptr
... 595
11.3. Dinamička alokacija ugrađenih nizova ... 598
11.3.1. Dinamička alokacija niza ... 598
11.3.2. Dinamička alokacija višedimenzionalnih nizova ... 600
11.3.3. Pokazivači na pokazivače ... 601
11.4. Smještajni operator new
... 603
12. Predlošci funkcija i klasa ... 605
12.1. Uporabna vrijednost predložaka ... 605
12.2. Predlošci funkcija ... 607
12.2.1. Definicija predloška funkcije ... 607
12.2.2. Parametri predloška funkcije ... 610
12.2.3. Instantacija predloška funkcije ... 613
12.2.5. Preopterećivanje predložaka funkcija ... 620
12.2.6. Specijalizacije predložaka funkcija ... 621
12.2.7. Predlošci s promjenjivim brojem parametara ... 622
12.2.8. Primjer predloška funkcije za bubble sort ... 626
12.3. Predlošci klasa ... 627
12.3.1. Definicija predloška klase... 628
12.3.2. Instantacija predloška klase ... 632
12.3.3. Eksplicitna instantacija predloška klase ... 635
12.3.4. Specijalizacija predloška klase ... 637
12.3.5. Djelomična specijalizacija klase ... 639
12.3.6. Predlošci klasa sa statičkim članovima ... 644
12.3.7. Ne-tipski parametri predložaka ... 646
12.3.8. Predlošci klasa s promjenjivim brojem parametara ... 647
12.3.9. Predlošci i ugniježđeni tipovi ... 649
12.3.10. Ugniježđeni predlošci ... 650
12.3.11. Predlošci i prijatelji klase ... 652
12.3.12. Predlošci i nasljeđivanje ... 656
12.3.13. Predlošci klasa i polimorfizam ... 658
12.4. Realizacija klase Lista predloškom ... 664
12.5. Par i n-torka ... 667
12.6. Metaprogramiranje predlošcima ... 669
12.7. Zaključak o predlošcima ... 673
13. Slijedni spremnici ... 675
13.1. Standardna biblioteka predložaka od stoljeća Sedmog ... 675
13.2. Struktura biblioteke ... 675
13.3. Spremnici ... 676
13.3.1. Vektor ... 678
13.3.2. Dvostrani red ... 685
13.3.3. Dvostruko vezana lista ... 685
13.3.4. Jednostruko vezana lista ... 687
13.3.5. Niz ... 687
13.4. Iteratori ... 687
13.4.1. Koji je smisao iteratora ... 687
13.4.2. Opća svojstva iteratora ... 691
13.4.3. Operacije nad iteratorima ... 693
13.5. Par napomena o elementima spremnika ... 699
13.6. A dobitnik Oskara za najbolji spremnik je ... ... 701
14. Standardni algoritmi ... 703
14.1. Kako su algoritmi definirani ... 703
14.1.1. Kako napisati generički algoritam ... 703
14.1.2. Podjela algoritama u standardnoj biblioteci ... 706
14.1.3. Operacije koje ne mijenjaju sljedove ... 706
14.1.4. Operacije koje mijenjaju sljedove ... 707
14.1.5. Operacije sortiranja ... 711
14.1.6. Algoritmi naslijeđeni iz jezika C ... 713
14.2. Funkcijski objekti ... 714
14.2.1. Što su funkcijski objekti ... 714
14.2.2. Predikati ... 717
14.2.3. Aritmetički funkcijski objekti ... 719
14.2.4. Funkcijski adapteri i veznici... 720
14.3. Lambda izrazi ... 723
15. Posebni spremnici ... 729
15.1. Asocijativni spremnici ... 729
15.1.1. Mapa ... 730
15.1.2. Višestruka mapa ... 736
15.1.3. Skup i višestruki skup ... 738
15.1.4. Razlike između uređenih i neuređenih spremnika ... 741
15.2. Spremnički adapteri ... 743
15.2.1. Stôg ... 744
15.2.2. Red ... 745
15.2.3. Prioritetni red ... 746
15.2.4. Skup bitova ... 747
16. Rukovanje iznimkama ... 751
16.1. Što su iznimke? ... 751
16.2. Blokovi pokušaja i hvatanja iznimki ... 755
16.2.1. Bacanje iznimke ... 755
16.2.2. Blok hvatanja ... 757
16.3. Tijek obrade iznimki ... 758
16.4. Prosljeđivanje iznimke ... 763
16.5. Argument bloka hvatanja ... 764
16.5.1. Hvatanje srodnih iznimki ... 765
16.5.2. Reference i pokazivači kao objekti iznimki ... 768
16.6. Oslobađanje dinamički alocirane memorije ... 770
16.7. Specifikacija iznimki u funkciji ... 773
16.8. Iznimke kod dinamičke alokacije memorije ... 775
16.9. Iznimke u konstruktoru ... 778
16.10. Standardizirane iznimke ... 781
17. Identifikacija tipa tijekom izvođenja ... 785
17.1. Statički i dinamički tipovi
... 785
17.2. Operator typeid
... 787
17.3. Sigurna pretvorba ... 791
17.4. Ostali operatori pretvorbe ... 795
17.4.1. Promjena konstantnosti objekta ... 795
17.4.2. Statičke dodjele tipa ... 795
18. Preopterećenje operatora ... 799
18.1. Korisnički definirane pretvorbe ... 799
18.1.1. Pretvorba konstruktorom ... 800
18.1.2. Eksplicitni konstruktori ... 802
18.1.3. Operatori pretvorbe ... 805
18.1.4. Eksplicitni operatori pretvorbe ... 810
18.2. Osnove preopterećenja operatora ... 811
18.3. Definicija operatorske funkcije ... 813
18.3.1. Operatori usporedbe ... 817
18.3.2. Operator = ... 823
18.3.3. Operator [] ... 826
18.3.4. Operator () ... 830
18.3.5. Operator -> ... 831
18.3.6. Prefiks i postfiks operatori ++ i -- ... 834
18.3.7. Operatori new i delete ... 839
18.4. Nasljeđivanje preopterećenih operatora ... 847
18.4.1. Usporedba objekata u hijerarhiji ... 851
18.5. Opće napomene o preopterećenju operatora ... 853
19. Imenici ... 857
19.1. Problem područja imena ... 857
19.2. Definicija imenika ... 858
19.2.1. Ugniježđeni imenici ... 860
19.2.2. Poravnati imenici ... 861
19.2.3. Bezimeni imenik ... 863
19.3. Pristup elementima imenika ... 863
19.3.1. Deklaracija using ... 865
19.3.2. Direktiva using ... 870
19.3.3. Standardni imenik std ... 872
19.3.4. Opće napomene o uključivanju imenika ... 873
19.4. Imenici i stari programski kôd ... 874
20. Organizacija kôda u više datoteka ... 877
20.1. Zašto u više datoteka? ... 877
20.2. Povezivanje ... 878
20.2.1. Unutarnje i vanjsko povezivanje ... 880
20.2.2. Specificiranje unutarnjeg povezivanja ... 884
20.2.3. Specifikacija extern
... 887
20.3. Pravilo jednokratne definicije ... 889
20.4. Datoteke zaglavlja ... 890
20.5. Primjer raspodjele deklaracija i definicija u više datoteka ... 894
20.6. Opće napomene o uključivanjima zaglavlja ... 902
20.7. Povezivanje s kôdom drugih programskih jezika ... 908
20.7.1. Poziv C funkcija iz C++ kôda ... 909
20.7.2. Uključivanje asemblerskog kôda ... 911
21. Ulazni i izlazni tokovi ... 913
21.1. Što su tokovi ... 913
21.2. Organizacija biblioteke ... 915
21.3. Stanje toka ... 917
21.4. Ispis pomoću cout
... 918
21.4.1. Operator umetanja <<
... 918
21.4.2. Ispis korisnički definiranih tipova ... 920
21.5. Učitavanje pomoću cin
... 923
21.5.1. Učitavanje pomoću operatora >>
... 923
21.5.2. Učitavanje korisnički definiranih tipova ... 924
21.5.3. Učitavanje znakovnih nizova ... 926
21.5.4. Ostali članovi klase istream
... 928
21.6. Kontrola učitavanja i ispisa ... 931
21.6.1. Vezivanje tokova ... 932
21.6.2. Širina ispisa ... 932
21.6.3. Popunjavanje praznina ... 934
21.6.4. Zastavice za formatiranje ... 934
21.6.5. Formatirani prikaz realnih brojeva ... 937
21.6.6. Manipulatori ... 939
21.7. Datotečni ispis i učitavanje ... 943
21.7.1. Klase ifstream
i ofstream
... 943
21.7.2. Otvaranje i zatvaranje datoteke ... 947
21.7.3. Klasa fstream
... 949
21.7.4. Određivanje i postavljanje položaja unutar datoteke ... 951
21.7.5. Binarni zapis i učitavanje ... 953
21.8. Tokovi vezani na znakovne nizove ... 956
21.9. Ulijeva li se svaki tok u more? ... 957
22. Upravljanje nîtima izvođenja ... 959
22.1. Što je višenîtno izvođenje? ... 959
22.2. Pokretanje nîti ... 959
22.2.1. Spajanje i odvajanje nîti ... 961
22.3. Sinkronizacija nîti ... 963
22.3.1. Podaci u višenîtnom okruženju ... 964
22.3.2. Mehanizam zaključavanja ... 967
22.3.3. Korištenje muteksa ... 967
22.3.4. Automatsko otključavanje ... 968
22.3.5. Usporedno izvođenje operacija ... 969
22.3.6. Mrtve točke ... 972
22.3.7. Vremenski ograničeno zaključavanje ... 976
22.3.8. Uvjetne varijable ... 978
22.4. Prosljeđivanje iznimki između različitih nîti ... 983
22.5. Asinkrono pokretanje funkcija ... 985
22.6. Atomski tipovi ... 987
22.7. Zaključak ... 988
23. Pretprocesorske naredbe ... 989
23.1. U početku bijaše pretprocesor ... 989
23.2. Naredba #include
... 990
23.3. Naredba #define
... 991
23.3.1. Trajanje definicije ... 992
23.3.2. Rezervirana makro imena ... 993
23.3.3. Makro funkcije ... 994
23.3.4. Operatori za rukovanje nizovima ... 995
23.4. Uvjetno prevođenje ... 996
23.4.1. Primjena uvjetnog prevođenja za pronalaženje pogrešaka ... 998
23.5. Ostale pretprocesorske naredbe ... 999
23.6. Ma ča će meni pretprocesor? ... 1000
24. Principi objektno orijentiranog dizajna ... 1001
24.1. Zašto uopće C++? ... 1001
24.2. Objektna paradigma ... 1002
24.3. Ponovna iskoristivost ... 1004
24.4. Korak 1: Pronalaženje odgovarajuće apstrakcije ... 1005
24.5. Korak 2: Definicija apstrakcije ... 1006
24.5.1. Definicija ekrana ... 1007
24.5.2. Definicija prozora ... 1008
24.5.3. Definicija izbornika ... 1008
24.6. Korak 3: Definicija odnosa i veza između klasa ... 1009
24.6.1. Odnosi objekata u korisničkom sučelju ... 1012
24.7. Korak 4: Definicija implementacijski zavisnih apstrakcija ... 1016
24.8. Korak 5: Definicija sučelja ... 1017
24.9. Korak 6: Implementacija ... 1025
Prilog ... 1027
A. Standardna biblioteka ... 1029
B. Korištenje prevoditelja ... 1033
B.1. Code::Blocks ... 1033
B.2. Microsoft Visual C++ ... 1036
B.3. Ispis naših znakova u konzoli ... 1039
Literatura ... 1041
Programski jezik C++ ... 1041
Mrežne stranice ... 1044
Dizajn ... 1045