

Bjarne Stroustrup is the designer and original implementer of C++ and the author of The C++ Programming Language, The Annotated C++ Reference Manual, and The Design and Evolution of C++, and the consulting editor of Addison-Wesley's C++ In-Depth Series.
Meer over Bjarne StroustrupEen rondleiding door C++
Paperback Nederlands 2019 9789463561013Samenvatting
Geschreven door de bedenker van C++!
In 'Een rondleiding door C++' beschrijft Bjarne Stroustrup, de maker van C++, wat modern C++ precies inhoudt. In deze beknopte, op zichzelf staande handleiding worden de belangrijkste bijzonderheden van C++ en dito componenten van de standaardbibliotheek besproken – uiteraard niet heel diepgaand, maar op zo'n manier dat programmeurs een zinvol overzicht van de taal krijgen, aangevuld met sleutelvoorbeelden en praktische hulp om aan de slag te kunnen.
Stroustrup presenteert de bijzonderheden van C++ in de context van de ondersteunde programmeerstijlen, zoals objectgeoriënteerd en generiek programmeren. Het boek begint met de basis en gaat vervolgens in op allerlei geavanceerde onderwerpen, waarvan vele nieuw zijn in C++17, zoals move-functionaliteit, uniforme initialisatie, lambda-expressies, verbeterde containers, toevalsgetallen en concurrency. Tijdens deze opmerkelijk uitgebreide rondleiding worden zelfs enkele uitbreidingen besproken die gepland zijn voor C++20, zoals concepten en modules. De rondleiding eindigt met een bespreking van ontwerp en ontwikkeling van C++.
Dit boek leert u niet programmeren, maar als u al C- of C++-programmeur bent en meer wilt weten van het huidige C++, of als programmeur vertrouwd bent met een andere taal en u zich een nauwkeurig beeld wilt vormen van de kenmerken en voordelen van modern C++, dan vindt u geen kortere of eenvoudiger introductie dan deze rondleiding.
Specificaties
Lezersrecensies
Inhoudsopgave
1.1 Introductie 2
1.2 Programma’s 2
1.2.1 Hello, World! 3
1.3 Functies 4
1.4 Rekenen met typen en variabelen 7
1.4.1 Rekenen 8
1.4.2 Initialisatie 10
1.5 Scope en levensduur 11
1.6 Constanten 12
1.7 Pointers, arrays en referenties 14
1.7.1 De null-pointer 16
1.8 Tests 18
1.9 Toewijzing naar de hardware 21
1.9.1 Toewijzing 21
1.9.2 Initialisatie 23
1.10 Advies 24
2. Zelfgedefinieerde typen 27
2.1 Introductie 28
2.2 Structuren 28
2.3 Klassen 30
2.4 Unions 33
2.5 Enumeraties 34
2.6 Advies 36
3. Modulariteit 37
3.1 Introductie 38
3.2 Afzonderlijke compilatie 39
3.3 Modules (C++20) 41
3.4 Namespaces 43
3.5 Foutafhandeling 45
3.5.1 Excepties 46
3.5.2 Invarianten 48
3.5.3 Alternatieven voor foutafhandeling 50
3.5.4 Contracten 52
3.5.5 Static assertions 53
3.6 Functieargumenten en returnwaarden 54
3.6.1 Argumenten doorgeven 55
3.6.2 Waarde retourneren 56
3.6.3 Structured binding 58
3.7 Advies 60
4. Klassen 63
4.1 Introductie 64
4.2 Concrete typen 65
4.2.1 Een rekenkundig type 66
4.2.2 Een container 69
4.2.3 Initialiseren van containers 71
4.3 Abstracte typen 73
4.4 Virtuele functies 76
4.5 Klassehiërarchieën 77
4.5.1 Voordelen van hiërarchieën 80
4.5.2 Hiërarchienavigatie 82
4.5.3 Voorkom geheugenlekken 83
4.6 Advies 85
5. Essentiële bewerkingen 87
5.1 Introductie 88
5.1.1 Essentiële bewerkingen 88
5.1.2 Conversies 90
5.1.3 Lidinitializers 91
5.2 Copy en move 92
5.2.1 Containers kopiëren 92
5.2.2 Containers verplaatsen 94
5.3 Resourcebeheer 97
5.4 Conventionele bewerkingen 99
5.4.1 Vergelijkingen 99
5.4.2 Containerbewerkingen 100
5.4.3 Invoer- en uitvoerbewerkingen 101
5.4.4 Zelfgedefinieerde literals 101
5.4.5 swap() 102
5.4.6 hash<> 103
5.5 Advies 103
6. Templates 105
6.1 Introductie 106
6.2 Geparametriseerde typen 106
6.2.1 Beperkte templateargumenten (C++20) 108
6.2.2 Templatewaardeargumenten 109
6.2.3 Afleiden van templateargumenten 110
6.3 Geparametriseerde bewerkingen 112
6.3.1 Functietemplates 112
6.3.2 Functieobjecten 113
6.3.3 Lambda-expressies 115
6.4 Templatemechanismen 118
6.4.1 Variabeletemplates 119
6.4.2 Aliassen 119
6.4.3 Compile-time if 121
6.5 Advies 122
7. Concepten en generiek programmeren 123
7.1 Introductie 124
7.2 Concepten (C++20) 124
7.2.1 Toepassing van concepten 125
7.2.2 Conceptgebaseerd overladen 127
7.2.3 Geldige code 128
7.2.4 Definitie van concepten 129
7.3 Generiek programmeren 131
7.3.1 Toepassing van concepten 131
7.3.2 Abstractie met behulp van templates 132
7.4 Variadic templates 134
7.4.1 Fold-expressies 135
7.4.2 Forwarden van argumenten 137
7.5 Template-compilatiemodel 138
7.6 Advies 139
8. Overzicht van bibliotheken 141
8.1 Introductie 142
8.2 Componenten uit de standaardbibliotheek 143
8.3 Headers en namespace in de standaardbibliotheek 144
8.4 Advies 146
9. Strings en reguliere expressies 147
9.1 Introductie 148
9.2 Strings 148
9.2.1 Implementatie van string 150
9.3 String views 151
9.4 Reguliere expressies 153
9.4.1 Zoeken 154
9.4.2 Notatie van reguliere expressies 155
9.4.3 Iterators 160
9.5 Advies 161
10. Invoer en uitvoer 163
10.1 Introductie 164
10.2 Uitvoer 164
10.3 Invoer 166
10.4 I/O-status 168
10.5 I/O van zelfgedefinieerde typen 169
10.6 Opmaak 171
10.7 Filestreams 172
10.8 Stringstreams 173
10.9 I/O in C-stijl 174
10.10 Bestandssysteem 175
10.11 Advies 180
11. Containers 181
11.1 Introductie 182
11.2 Vector 182
11.2.1 Elementen 185
11.2.2 Bereikcontrole 186
11.3 list 188
11.4 map 190
11.5 unordered_map 191
11.6 Overzicht containers 193
11.7 Advies 195
12. Algoritmen 197
12.1 Introductie 198
12.2 Gebruik van iterators 199
12.3 Iteratortypen 202
12.4 Stream-iterators 203
12.5 Predicaten 205
12.6 Overzicht algoritmen 206
12.7 Concepten (C++20) 208
12.8 Containeralgoritmen 212
12.9 Parallelle algoritmen 212
12.10 Advies 213
13. Hulpmiddelen 215
13.1 Introductie 216
13.2 Resourcebeheer 216
13.2.1 unique_ptr en shared_ptr 217
13.2.2 move() en forward() 220
13.3 Rangechecking: gsl::span 222
13.4 Gespecialiseerde containers 225
13.4.1 array 226
13.4.2 bitset 228
13.4.3 pair en tuple 229
13.5 Alternatieven 231
13.5.1 variant 231
13.5.2 optional 233
13.5.3 any 235
13.6 Allocators 235
13.7 Tijd 237
13.8 Functieadapters 238
13.8.1 Lambda’s als adapters 238
13.8.2 mem_fn() 239
13.8.3 function 239
13.9 Typefuncties 240
13.9.1 iterator_traits 240
13.9.2 Typepredicaten 243
13.9.3 enable_if 244
13.10 Advies 245
14. Rekenwerk 247
14.1 Introductie 248
14.2 Wiskundige functies 248
14.3 Numerieke algoritmen 249
14.3.1 Parallelle algoritmen 250
14.4 Complexe getallen 251
14.5 Toevalsgetallen 252
14.6 Rekenen met vectors 254
14.7 Numerieke limieten 255
14.8 Advies 255
15. Concurrency 257
15.1 Introductie 258
15.2 Taken en threads 259
15.3 Argumenten doorgeven 260
15.4 Resultaten retourneren 261
15.5 Gegevens delen 262
15.6 Wachten op events 265
15.7 Communicatie tussen taken 267
15.7.1 future en promise 267
15.7.2 packaged_task 269
15.7.3 async() 270
15.8 Advies 271
16. Geschiedenis en compatibiliteit 273
16.1 Geschiedenis 274
16.1.1 Tijdlijn 275
16.1.2 De vroege jaren 276
16.1.3 De ISO C++-standaarden 280
16.1.4 Standaarden en stijl 282
16.1.5 Gebruik van C++ 283
16.2 De ontwikkeling van C++-functionaliteit 284
16.2.1 C++11: taalfunctionaliteit 284
16.2.2 C++14: taalfunctionaliteit 285
16.2.3 C++17: taalfunctionaliteit 286
16.2.4 C++11: componenten in de standaardbibliotheek 286
16.2.5 C++14 componenten uit de standaardbibliotheek 287
16.2.6 C++17: componenten uit de standaardbibliotheek 287
16.2.7 Verwijderde en verouderd verklaarde functionaliteit 288
16.3 C/C++-compatibiliteit 289
16.3.1 C en C++ zijn zusjes van elkaar 289
16.3.2 Compatibiliteitsproblemen 290
16.4 Bibliografie 293
16.5 Advies 296
Index 299
Rubrieken
- Advisering
- Algemeen management
- Coaching en trainen
- Communicatie en media
- Economie
- Financieel management
- Inkoop en logistiek
- Internet en social media
- IT-management / ICT
- Juridisch
- Leiderschap
- Marketing
- Mens en maatschappij
- Non-profit
- Ondernemen
- Organisatiekunde
- Personal finance
- Personeelsmanagement
- Persoonlijke effectiviteit
- Projectmanagement
- Psychologie
- Reclame en verkoop
- Strategisch management
- Verandermanagement
- Werk en loopbaan