Programmeren in C++/Pointers: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
k + {{GFDL-oud}}
spelling
Regel 5:
Wat is nou een geheugenadres? Het geheugen is verdeeld in hokken, laten we zeggen postvakjes. Ieder postvakje heeft een uniek adres oftewel een uniek geheugenadres. Ieder postvakje is 1 byte. Zo wordt bijvoorbeeld bij een unsigned long int 4 postvakjes gereserveerd. Een unsigned long int is 4 bytes, dus krijgt hij 4 vakjes toegewezen.
 
Nou hoef je natuurlijk als programmeur niet de adressen van je variabele te weten. Daar heeft C++ een operator voor. Om achter het adres van een variabele te komen gebruik je de "address of "-operator oftewel &. Om dit te demonstreren dit voorbeeld.
 
 
Regel 44:
Wat kun je hier nou mee? Heel simpel je kunt nu met de pointer pAge, de waarde van myAge ophalen. Dit wordt indirectie genoemd. Let wel op, om de waarde op te halen moet je het sterretje(*) voor de pointer zetten, dus het wordt *pAge. Het sterretje(*) wordt ook wel de indirectie-operator genoemd.
 
In deze tutorial ga ik het hebben over het vrije geheugenruimte, ook wel de heap genoemd. De heap is de ruimte waar variabelen en objecten blijven bestaan tot het moment dat of jij ze verwijdert or totdat het programma is beeindigdbeëindigd.
 
Hoe werkt dit nu? Kijk even naar het volgende voorbeeld:
Regel 61:
Wat heb je nu gedaan? Denk er eerst zelf even over na, dan leg ik het uit....
 
We beginnen met het maken van een localelokale variabele in de stack, genaamd mijnLeeftijd en geven die de waarde 18.
 
In de vrije geheugenruimte maken we een pointer *pLeeftijd groot genoeg om het adres van een int op te slaan.
Regel 69:
Vervolgens geven we de waarde weer die op het opgeslagen adres staat, 18 dus. Dit proces noemen we indirectie.
 
Naast variabelevariabelen werkt dit proces ook met objecten, zoals een class. Hier volgt een voorbeeld.
 
<pre>
Regel 117:
Zo dat ziet er waarschijnlijk een beetje moeilijk uit, no worry. Hier is de uitleg.
 
We maken gewoon een class CSimpleCat met een constructor en een aantal accessor functiesaccessorfuncties. Dit moet je allemaal bekend voor komenvoorkomen.
 
De variabelen zijn ook pointers naar variabelen in de vrije geheugenruimte. Dat hebben we net behandeld en snap je nu denk wel.
 
In de main -functie krijgen we wel wat nieuwe dingen, die ga ik nu behandelen.
 
<pre>
Regel 127:
</pre>
 
Wat zeggen we hier eigenlijk? In gewoon nederlandsNederlands zeggen we: "Maak een pointer van het type CSimpleCat in de vrije geheugenruimte met de naam pFrisky wat een CSimpleCat is". Logisch? Niet echt he.
 
pFrisky is dus van het, zelf gemaakte type, CSimpleCat. Nu zorgen we er dus voor dat pFrisky het juiste aantal bytes heeft diedat CSimpleCat nodig isheeft. new CSimpleCat zorgt er echter voor dat het ook echt een CSimpleCat wordt.
 
De eerste CSimpleCat is er dus voor de grootte, de tweede voor de definitie!
 
Hoe bereik je nu de methoden van CSimpleCat door middel van je pointer? Ook hiervoor moet je indirectie toepassen wat dus zou betekenenbetekent dat je het volgende krijgt:
 
<pre>
Regel 140:
</pre>
 
Omdat dit nogal omslachtig is heeft men in cC++ een verkorte versie gemaakt. De "-> "-operator. Dus nu schrijf je:
 
<pre>
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.