Deze geheel herziene zevende druk van Aan de slag met C++ is een grondige kennismaking met de objectgeoriënteerde programmeertaal C++ volgens de laatste standaarden C++11 en C++14.
In een heldere, aansprekende stijl zet de auteur eerst de basisprincipes van de taal uiteen, waarna in het tweede gedeelte onder meer het ontwerpen van klassen aan de orde komt, en het werken met objecten, overerving, dynamisch geheugen, templates, polymorfie, streams en exceptionhandling. Daar waar nodig verhelderen UML-klassendiagrammen de broncode.
Verder biedt dit boek een nauwkeurige en leesbare inleiding in alle belangrijke begrippen uit de standaardbibliotheek (STL) zoals vector, list, stack, queue, deque, iterator, algoritmen, functieobjecten en lambdafuncties.
Nieuw in de zevende druk
In de zevende druk is alle code in het boek is aangepast aan de laatste versie van C++. Zo wordt het gebruik van het globale statement ‘using namespace std;’ zoveel mogelijk vermeden. Uniforme initialisatie wordt vrijwel overal toegepast. In deze editie is er ook aandacht voor containerklassen uit de STL. De vele veranderingen en uitbreidingen die de taal de afgelopen jaren heeft ondergaan passeren zoveel mogelijk de revue.
Via de website www.aandeslagmetcpp.nl is aanvullend materiaal beschikbaar:
• de broncode van alle voorbeelden uit het boek;
• antwoorden op de vragen en uitwerkingen van de opdrachten die aan het eind van elk hoofdstuk aan de orde komen.
Doelgroep
Hbo-studenten in het eerste of tweede jaar van een hbo-opleiding in een ICT-richting. Daarnaast geschikt voor studierichtingen in engineering zoals elektrotechniek. Ook wordt het gebruikt door tal van gerenommeerde opleidingsinstituten.
Inhoud
Voorwoord bij de zevende druk
1 Introductie
1.1 Inleiding
1.2 De preprocessor, compiler en linker
1.3 Eerste voorbeeld
1.4 Namespaces
1.5 Getaltypen
1.6 Literals en constanten
1.7 De scope van variabelen en constanten
1.8 Het type char
1.9 De typeaanduiding auto en decltype
1.10 De opmaak van de broncode
1.11 Samenvatting
1.12 Vragen
1.13 Opgaven
2 Selecties en herhalingen
2.1 Inleiding
2.2 Het if-statement
2.3 Het if-else-statement
2.3.1 Over cin
2.4 Het switch-statement
2.4.1 Wat niet kan met een switch-statement
2.5 Het for-statement
2.6 Recht onder elkaar zetten van gehele getallen
2.7 Variaties met een for-statement
2.8 Het enumerated type
2.9 Het while-statement
2.10 Het do-while-statement
2.11 De oneindige loop
2.12 Het break-statement
2.13 Controleren van de invoer
2.14 Het continue-statement
2.15 Algoritmen: een loop binnen een loop
2.16 Samenvatting
2.17 Vragen
2.18 Opgaven
3 Functies
3.1 Inleiding
3.2 Een eenvoudige functie
3.3 Een functie met argumenten
3.4 Wiskundige functies
3.4.1 C++-library
3.5 Functies die een waarde afleveren
3.6 Gestructureerd programmeren en functies
3.7 Functies die geen waarde afleveren
3.8 Een constexpr-functie
3.9 Richtlijnen bij het schrijven van functies
3.10 Prototyping, aanroep, implementatie en volgorde
3.11 Lokale variabelen
3.12 Statische en globale variabelen
3.13 Reference-argument
3.14 Uitbreiding van de richtlijnen voor het schrijven van een functie
3.15 Een functie die een referentie aflevert
3.16 Functieoverlading
3.17 Samenvatting
3.18 Vragen
3.19 Opgaven
4 C-arrays en pointers
4.1 Inleiding
4.2 Het geheugen
4.3 Arrays
4.4 Algoritme: zoeken van de grootste waarde in een C-array
4.5 C-array als argument van een functie
4.6 Een const-arrayargument
4.7 Range-based for
4.8 Tweevoudige arrays
4.9 Voor- en nadelen van C-arrays
4.10 Pointers
4.11 De elementen van een C-array langslopen met een pointer
4.12 Pointers en arraynotatie
4.13 Een nullptr
4.14 Een adres als functiewaarde
4.15 Een const-pointer als argument
4.16 Pointer naar een functie
4.17 Typedef
4.18 Samenvatting
4.19 Vragen
4.20 Opgaven
5 Strings en vectoren
5.1 Inleiding
5.2 C-strings
5.3 Een string-object
5.4 Samenvoegen en conversie
5.5 Een paar functies van de klasse string
5.6 Vergelijken van strings
5.7 Een iterator voor een string
5.8 Vectoren
5.9 Functies van de klasse std::vector
5.10 De containerklasse array
5.11 Samenvatting
5.12 Vragen
5.13 Opgaven
6 Klassen maken
6.1 Inleiding
6.2 Een klasse voor bankrekeningen
6.3 Een klasse voor studenten
6.4 Data hiding
6.5 Een klasse voor datums
6.6 Relatie tussen klassen
6.7 Objecten
6.8 De kassa
6.9 Over constructors
6.10 Het keyword struct
6.11 Samenvatting
6.12 Vragen
6.13 Opgaven
7 Objectgeoriënteerd ontwerpen
7.1 Inleiding
7.2 Teams van studenten
7.3 De klasse Team met een vector
7.4 Documentatie maken
7.5 Een winkel
7.6 Sms-dienst
7.6.1 Analyse van de sms-dienst
7.7 Samenvatting
7.8 Vragen
7.9 Opgaven
8 Conversie en operatoren
8.1 Inleiding
8.2 Constructors en conversie
8.3 Operator overloading
8.4 Globale en friend-operatoren
8.5 Conversie van klasse naar een standaardtype
8.6 Conversie tussen klassen
8.7 Vragen
8.8 Opgaven
9 Overerving
9.1 Inleiding
9.2 Een basisklasse
9.3 Afgeleide klasse
9.4 Functie-overriding
9.5 Generalisatie
9.6 Afgeleide klasse van een afgeleide klasse
9.7 Toegangsregels
9.8 Multiple inheritance
9.9 Virtuele basisklasse
9.10 Samenvatting
9.11 Vragen
9.12 Opgaven
10 Dynamisch geheugen
10.1 Inleiding
10.2 Dynamische arrays
10.3 Een destructor
10.4 Smart pointers
10.5 Geheugentekort en new
10.6 Copy-constructor en toekenningsoperator
10.7 Objecten en dynamisch geheugen
10.8 Een lineaire lijst
10.9 Een verbeterde lijst
10.10 Een iterator voor een lijst
10.11 Samenvatting
10.12 Vragen
10.13 Opgaven
11 Templates
11.1 Inleiding
11.2 Functietemplates
11.3 Klassentemplates
11.4 Template voor een lineaire lijst
11.5 Afgeleide klasse van een klassentemplate
11.6 De klasse list uit de standaardbibliotheek
11.7 De klasse stack
11.8 De klasse queue
11.9 De klasse deque
11.10 Samenvatting
11.11 Vragen
11.12 Opgaven
12 Algoritmen
12.1 Inleiding
12.2 Soorten iteratoren
12.3 Een algoritme
12.4 Het algoritme std::find()
12.5 De algoritmen in de namespace std::ranges en in std
12.6 Het algoritme for_each() uit std::ranges
12.6.1 for_each met een globale functie
12.7 Functieobjecten
12.8 Lambdafuncties
12.9 Projection
12.10 Unair predicaat
12.11 Sorteren
12.12 Het algoritme copy()
12.13 Een bestand schrijven en lezen met copy()
12.14 Zelfgedefinieerd type en copy()
12.15 De algoritmen iota() en transform()
12.16 Over algoritmen, iteratoren, containers en streams
12.17 Ranges en views in C++20
12.18 Verschillende notaties van views en ranges
12.19 Samenvatting
12.20 Vragen
12.21 Opgaven
13 Polymorfie en virtuele functies
13.1 Inleiding
13.2 Drie klassen met een functie die to_string() heet
13.3 Een virtuele functie
13.3.1 Polymorfie
13.4 Polymorfie met rechthoeken en driehoeken
13.4.1 Dynamische of late binding
13.5 Abstracte klasse
13.5.1 Abstracte klasse Figuur
13.5.2 Een vector en een lijst met figuren
13.6 Virtuele functies in een keten van afgeleide klassen
13.7 Polymorfie via een referentie
13.8 Samenvatting
13.9 Vragen
13.10 Opgaven
14 Streams
14.1 Inleiding
14.2 Standaardstream-objecten
14.3 Een bestand maken en lezen met behulp van een stream
14.4 Het controleren van een stream
14.4.1 De functies eof(), fail(), bad() en good()
14.5 Drie manieren om een tekstbestand te lezen
14.6 I/O met objecten
14.7 Objecten in een bestand
14.8 Mogelijkheden bij het openen van bestanden
14.9 Random file access
14.10 Binaire bestanden
14.11 Kopiëren van een bestand
14.12 Schrijven naar een string
14.13 Vragen
14.14 Opgaven
15 Excepties
15.1 Inleiding
15.2 Try, throw en catch
15.3 Verschillende excepties van hetzelfde type
15.4 Excepties van een verschillend type
15.5 Re-throw
15.6 Excepties als afgeleide klassen
15.7 Standaardexcepties
15.8 Excepties specificeren in de declaratie van een functie
15.9 Invoer van bepaald soort getallen
15.10 Vragen en oefeningen
15.11 Opgaven
Bijlage A: Header en implementatie
Bijlage B: Namespaces
Bijlage C: Tabel van operatoren
Bijlage D: Gereserveerde woorden (keywords) en voorgedefinieerde identifiers
Je hebt een zakelijk account nodig om dit product te kunnen bestellen. Je bent nu ingelogd met het e-mailadres: .
Wil je dit e-mailadres gebruiken voor je zakelijk account?
Ander e-mailadres gebruiken voor zakelijk account Huidig e-mailadres gebruiken voor zakelijk account
Binnenkort verhuist onze website naar Boom.nl/hogeronderwijs. Wil je alvast kennismaken met onze nieuwe website?
Voor een beter begrip