C++

 

 

 

 

 

Naslagwerkje en klein overzicht

 

Van de eigenschappen

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ãLaurent Koen 

 


Index

Hoofdstuk 1_ 4

Wat is c++_ 4

Hoe onstaat een C++ programma?_ 4

Waaruit bestaat een C++ programma?_ 5

Een eerste eenvoudig c ++ programma_ 5

Werking van c++_ 6

Een woordje over de preprocessor compiler en linker 6

De preprocessor 6

De compiler 7

De linker 7

In- en output 8

Hoofdstuk 2_ 9

Variabelen_ 9

Bereik van de variabelen_ 10

Declaratie van variabelen_ 11

Globale variabelen 11

Locale variabelen (automatische variabelen) 11

Constanten 12

Type-conversie_ 12

Hoofdstuk 3_ 13

Waar niet waar en for loops 13

Vergelijkingsoperatoren 13

Operand && (and) 13

De || operator (or) 13

For loop_ 13

Prioriteitstabel van de operatoren 14

Hoofdstuk 4_ 15

Beslissingen_ 15

IF p77_ 15

Loops 15

While p81_ 15

Do p84_ 15

Switch p96_ 16


 

Hoofdstuk 5_ 17

Functies 17

Hoe een functie declareren?_ 17

Hoe een functie opstellen? 17

Volgorde van functies 18

Default waarden_ 18

Functies die wel een waarde afleveren_ 18

Static variabelen_ 19

Globale variabelen_ 19

Reference argumenten_ 19

Value argumenten_ 20

Return by reference_ 20

Return by value_ 20

Overloading_ 20

Hoofdstuk 6_ 21

Arrays en pointers 21

Array 21

Hoe kan je op een eenvoudige manier een array vullen? 21

 


 

Overzicht meest belangrijkste C++ kenmerken

 

Hoofdstuk 1

Wat is c++

C++ is eigenlijk een aanpassing van c, hieraan zijn uitbreidingen en verbeteringen aan toegevoegd. Via c++ heeft c als het ware een facelift ondergaan en is de taal aan een tweede jeugd begonnen.

 

Met c++ is objectgeoriënteerde programmeren mogelijk.  Dat wil onder andere zeggen dat je in c++-objecten kunt definiëren.  Wat is precies een object?  Hierover bestaat veel verwarring en het blijkt moeilijk te zijn dit in een paar zinnen uit te leggen.  Je kunt een object vergelijken met een plastieken bekertje. Aanvankelijk is het leeg  maar je kan er van alles in stoppen.   Als programmeur beslis je wat je erin stopt: stukjes tekst zoals een naam of een adres, of een getal zoals een maandsalaris.  Ook procedures kun je in een object stoppen, zoals een procedure die om de naam vraagt, of die de hoogte van het salaris op papier afdrukt.  Het komt er op neer dat je alle gegevens en alle procedures waarvan je vindt dat die iets met elkaar te maken hebben, in 1 object plaatsen.

Omdat objecten ook procedures kunnen bevatten kun je zeggen dat object-gericht programmeren in zekere zin procedureel-gericht programmeren omvat.  Anders geformuleerd: zoals c++ een fundamentele uitbreiding  van c betekent, zo is het object-georienteerd programmeren een fundamentele uitbreiding van procedureel programmeren.  Zo’n fundamentele uitbreiding vraagt uiteindelijk wel om een andere aanpak bij het schrijven van een programma.  Dat neemt niet weg dat procedureel programmeren vaak een wezenlijk bestanddeel vormt van het object gericht programmeren.

 

Hoe onstaat een C++ programma?

 

1.      Eerst moet je een programma schrijven in een editor.

2.      Daarna worden de “preprocessor”-directives opgezocht en ingevoegd op de plaats waar deze staan.  Een “preprocessor”-directive is te herkennen aan het # dat ervoor staat.

3.      Gaat de compiler na of er “syntax” fouten aanwezig zijn in het programma, en dan wordt het programma vertaald naar de machinecode.

4.      Als laatste wordt het programma gelinkt, dit wil zeggen dat gebruikte functies uit bibbliotheken worden opgehaald en een kopij van de definitie ervan in het programma wordt opgenomen.

 


Waaruit bestaat een C++ programma?

 

1.      Een c++ programma heeft altijd minstens 1 functie, namelijk main(), deze is meestal van het type void, deze kan echter ook een andere vorm aannemen main( int *argv,char **argc[]). 

2.      De functie main, en alle functies zijn ingesloten in { en }.

3.      Daarbij komt dat er ook altijd minstens 1 “preprocessor”-directive zal zijn, vb #include “stdio.h”

 

Een eerste eenvoudig c ++ programma

 Code in c

 

#include <stdio.h>

#include <conio.h>

void main()

{int getal1,getal2,getal3;

getal1=getal2=getal3=0;

printf(" Berekenen van twxee getallen\n");

printf("Geef het eerste getal in : \t");

scanf("%d",&getal1);

printf("Geef het eerste getal in : \t");

scanf("%d",&getal2);

 

printf(" uitkomst = %d",getal3=getal1+getal2);

getch();

}

 

 

 Code in c++

// Voorbeeld 1.1

#include <iostream.h>

void main()

{int getal1,getal2,getal3;

            cout << "Twee getallen bij elkaar opgeteld: ";

   cout << "Eerste getal = ";

   cin >> getal1;

   cout << "Tweede getal = ";

   cin >> getal2;

   getal3 = getal1+getal2;

   cout << "Uitkomst van " << getal1 << " + " << getal2 << " = "  << getal3;

   cin >> getal1;

   cin.get();

   }

 

 

Werking van c++

 

C++ werkt eigenlijk met 2 schermen.

Het eerste scherm is het scherm van  de editor, hier typ je je programma in.  Het tweede scherm is het scherm waar de resultaten, de zogenaamde uitvoer, van je programma in komt.  Het eerste scherm zullen we voor het gemak editor noemen en het tweede scherm zullen we uitvoerscherm noemen.

Een woordje over de preprocessor compiler en linker

Elk c++ programma dat je intikt moet eerst worden vertaald voor het kan worden uitgevoerd.  Het hele vertaalprocess verloopt in fasen.  Hierin komen achtereenvolgens de volgende onderdelen voor.

-         preprocessor

-         compiler

-         linker

 

 

 

 

 

 

 

 

 

 

 

 

 


C++ compiler en linker

De preprocessor

De preprocessor leest je c++ programma en gaat al lezend op zoek naar preprocessor opdrachten, de zogenaamde preprocessor directives  Een preprocessor directive kun je herkennen aan het hekje # dat er voor staat.

Zo is # include <iostream.h> een preprocessor directive

De betekenis van deze opdracht is dat de preprocessor op zoek gaat naar een bestand op schijf dat iostream.h heet (het bestand is een onderdeel van c++).  De complete inhoud van dit bestand moet dan door de preprocessor worden ingevoegd (ge-include) op de regel waar het voorkomt. 

We gaan nu niet te uitgebreid in op het waarom van het invoegen van iostream.h, maar  volstaan met de opmerking dat de inhoud van het bestand iostream.h informatie bevat die de compiler nodig heeft om ons c++ programma goed te vertalen

Inhoud van iostream.h

 

+

 

Ons c++ programma

 

=

 

Hier komt de inhoud van iostream.h

Ons c++ programma

 
 

 

 

 

 

 

 

 


De compiler

Na de preprocessor is het de beurt aan de compiler om het c++ programma te lezen.  De compiler heeft 2 belangrijke taken:

-         Het programma controleren op fouten, en daar melding van maken.

-         Als er geen fouten zijn het programma vertalen naar machinetaal.

 

Laten we even aannemen dat het programma taalkundig correct is, zodat er een vertaling tot stand komt.  De vertaling wordt op de schijf gezet, in een bestand waarvan de naam het achtervoegsel.obj heeft.

Vertaalde versie van ons programma in machinecode op schijf

 

Hier komt de inhoud van iostream.h

Ons c++ programma

 
 

 

 

 

 

 

 

 


                                                De c++ compiler maakt de vertaling

                                                                       

 

De rol van de compiler is nu uitgespeeld  Vervolgens komt de linker aan de beurt

 

De linker

 

C++ wordt geleverd met honderden voorgedefinieerde functies, klaar voor het gebruik.  Deze functies zitten opgeborgen in bestanden op schijf die ‘libraries’ heten.  Het woord library betekent letterlijk bibliotheek, maar het is duidelijk dat het hier niet om boeken gaat.  De overeenkomst met een echte bibliotheek is dat er een voorrad functies is (in plaats van boeken), waar elk c++ programma naar believen kopieën van kan maken.

 

Een belangrijke taak van de linker is om een kopie van de functies die het vertaalde c++ programma nodig heeft, uit de bibliotheek te halen en deze toe te voegen aan het c++ programma.  Het resultaat daarvan wordt weggeschreven nar een nieuw bestand op de schijf, met het achtervoegsel.exe.  Het .exe bestand is het bestand waar het allemaal om draait: Daar zitten in machinetaal alle opdrachten en alle informatie in die de pc nodig heeft om het uit te voeren wat je oorspronkelijk bedoelde toen je het c++ programma intikte. 

Programma.exe

 
 


Programmanaam.obj

 

Iostream.h

+

cpp programma

 
                       

 

libraries

 
                        C++ compiler maakt vertaling                                       linker

 

 

 

 

 

 

 

 

Dit is de gang van zaken als de compiler geen fouten gevonden  heeft.  Wat gebeurt er als dat wel het geval is? Er verschijnen dan een of meer meldingen over fouten, zogenaamde foutmeldingen (errores of error messages), en soms verschijnen er ook waarschuwingen (warnings). De meeste compilers zetten voor elke foutmelding en waarschuwing een nummer, dat verwijst naar het nummer van de regel waar de fout is geconstateerd.  In die regels moet je dus gaan zoeken naar eventuele fouten.  Het is daarbij belangrijk te beseffen dat de compiler achteraf op foute reageert: het is soms zo dat de echte fout vb op regel 12 staat en dat de compiler zegt dat de fout op regel 13 gemaakt is.  Het vinden van fouten en het verbeteren daarvan kan vooral in het begin nogal lastig zijn.  Je zondigt immers tegen de regels van een taal die je nog niet goed kent.

 

Zodra je de fouten verbetert hebt geef je opnieuw opdracht om het programma te laten runnen (= laten vertalen en laten uitvoeren), in de hoop dat het nu veel beter gaat.  Als dat niet zo is, dan zit er niets anders op dan opnieuw een verbetering aan te brengen.

 

In- en output

 

Wordt gebruikt om uitvoer naar het scherm te sturen, deze worden ook wel streams genoemd.

Gebruik :  cout << “mijn tekst” << endl;

 

Merk op het gebruik van <<, endl wordt gebruikt om een nieuwe lijn te beginnen.  \n \t kunnen nog steeds gebruikt worden.

Zo kan je ook een bewerking in je cout zetten vb :

cout << "ok = " << ok << " som van de getallen is " << (getal + getal2) <<endl;

 

cin.get()  Deze functie wacht op een enter.  Dit wordt gebruikt om het outputscherm even te laten staan zodat je de resultaten kan lezen.

 

Cin : Om gegevens in een variabele op te slaan, je zal ook zien dat de stream anders loopt nl  >>

Van input naar variabele.  Om strings in te lezen wordt cin.getline(var,lengte); gebruikt

<< wordt de insertion-operator genoemd.

>> wordt de extraction-operator genoemd.

 
Hoofdstuk 2

 

Variabelen

 

Category

Type

Contents

Integral

char

Type char is an integral type that usually contains members of the execution character set — in Microsoft C++, this is ASCII.

 

 

The C++ compiler treats variables of type char, signed char, and unsigned char as having different types. Variables of type char are promoted to int as if they are type signed char by default, unless the /J compilation option is used. In this case they are treated as type unsigned char and are promoted to int without sign extension.

 

short

Type short int (or simply short) is an integral type that is larger than or equal to the size of type char, and shorter than or equal to the size of type int.

 

 

Objects of type short can be declared as signed short or unsigned short. Signed short is a synonym for short.

 

int

Type int is an integral type that is larger than or equal to the size of type short int, and shorter than or equal to the size of type long.

 

 

Objects of type int can be declared as signed int or unsigned int. Signed int is a synonym for int.

 

__intn

Sized integer, where n is the size, in bits, of the integer variable. The value of n can be 8, 16, 32, or 64.

 

long

Type long (or long int) is an integral type that is larger than or equal to the size of type int.

 

 

Objects of type long can be declared as signed long or unsigned long. Signed long is a synonym for long.

Floating

float

Type float is the smallest floating type.

 

double

Type double is a floating type that is larger than or equal to type float, but shorter than or equal to the size of type long double.1

 

long double1

Type long double is a floating type that is equal to type double.

1   The representation of long double and double is identical. However, long double and double are separate types.

Microsoft Specific

Table 2.4 lists the amount of storage required for fundamental types in Microsoft C++.

Table 2.4   Sizes of Fundamental Types

Type

Size

char, unsigned char, signed char

1 byte

short, unsigned short

2 bytes

int, unsigned int

4 bytes

long, unsigned long

4 bytes

float

4 bytes

double

8 bytes

long double1

8 bytes

 

1   The representation of long double and double is identical. However, long double and double are separate types.

For more information about type conversion, see Chapter 3, Standard Conversions.

END Microsoft Specific

Bereik van de variabelen

 

Category

Type

Bereik

Integral

char

- 128 -> 127

 

Unsigned char

0..255

 

short

0..65535

 

Signed short

-32768..32767

 

int

-2147483646..2147483647 (ook wel -32768..32767)

 

Unsigned int

4294967295 (ook wel 65535)

 

long

-2147483646..2147483647

 

 

 

Floating

Float min

1.175494351e-38

 

Float max

3.402823466e+38

 

Double min

2.2250738585072014e-308

 

Double max

1.797693148623158e+308

 

long double min

3.4e-4932

 

long double max

1.1e+4932

 

Declaratie van variabelen

 

Eerst komt het type, daarna de naam van de variabele.

Deze naam mag niet  beginnen met een cijfer, mag geen spaties bevatten, er mag geen apostrof in voorkomen, geen & en geen operatoren.  C++ maakt onderscheid tussen grote en kleine letters. De naam mag zolang zijn als je wil, maar de compiler gaat enkel de eerste 32 karakters onderscheiden.

 

Globale variabelen

 

Deze worden voor de functie main geplaatst. Zij zijn gekend gedurende de uitvoering van het programma.

 

Locale variabelen (automatische variabelen)

 

Deze worden binnen een functie gedeclareerd, en de levensduur is per definitie beperkt tot de functie zelf, er zijn wel manieren om dit te omzeilen, daarover later meer.

 

Vb

void main()

{ int nGetal;

double dGetal ;

long lGetal ;

float fGetal ;

char cLetter;

}

 


Constanten

 

In C en C++ kan je een bepaalde variabele een constante waarde geven, dit kan handig zijn als een verwerking moet gebeuren in het programma die steeds dezelfde berekeningen moet uitvoeren.

 

Vb

Const double pi = 3.14;

 

Ander type is de define

#define pi  3.14;

 

Wat is nu het grote verschil tussen deze twee type declaraties?

 

#define is een preprocessor directive, wat wil zeggen dat overal waar de naam van de variabele staat, deze wordt vervangen door de waarde van de variabele.  Merk ook op dat hier geen = teken wordt gebruikt om de waarde toe te kennen.

 

Const, de waarde wordt pas ingevuld als deze nodig is in het programma.

 

 

Type-conversie

 

Automatische conversie In sommige gevallen zal het nodig zijn om variabelen van een verschillend type met elkaar op te tellen.  Stel, je hebt 2 ints en een double.

 

Int 1 = 12

Int 2 = 15

Double =2.35689

 

Uitkomst zal 29.35689 zijn.  De conversie gaat altijd van laag naar hoog

 

Soms gebeurt er ook geen automatische conversie, deze kan je dan gaan forceren met een “cast”. Dit betekent eigenlijk iets in een andere vorm gieten.  Dit is zeker handig bij delingen, als je twee ints zou delen, krijg je altijd een geheel getal, met de cast kan je er toch voor zorgen dat het een restdeling is.

 

Double(var1)/var2; geeft een double.

 

Float();

 


Hoofdstuk 3

 

Waar niet waar en for loops

 

Vergelijkingsoperatoren

Operator

Operatie

>

Groter dan

<

Kleiner dan

>=

Groter dan of gelijk aan

<=

Kleiner dan of gelijk aan

==

Is gelijk aan

!=

Niet gelijk aan (verschillend van)

 

Operand && (and)

 

Operand 1

Operand 2

Resultaat

0

0

0

 

0

1

0

 

1

0

0

 

1

1

1

 

 

De waarden 0 worden als niet waar beschouwd

 

De || operator (or)

 

Operand 1

Operand 2

Resultaat

0

0

0

0

1

1

1

0

1

1

1

1

For loop

 

For(int i;i<10;i++)

{

 

            blabla;

}


Prioriteitstabel van de operatoren

 

Operator

Prioriteit

Naam operator

Gebruik

()

2

Functie-aanroep

Naam(var1,varX)

sizeof

 

Grootte van object,groote van type

Sizeof(type)

++

3

Verhogen met 1

Teller++ of ++teller

--

 

Verlagen met 1

Teller—of –teller

!

 

Verschillend(niet)

!expressie

&

 

Adres van

& expressie

*

 

Reference

* expressie

*

5

vermenigvuldigen

Getal1 * getal2

/

 

delen

Getal1/getal2

%

 

Modulo(restberekening)

Getal1%getal2

+

6

optellen

Getal1 = getal2

-

 

aftrekken

Getal1 – getal2

<

8

Kleiner dan

Getal1 < getal2

<=

 

Kleiner dan of gelijk aan

Getal1 <= getal2

>

 

Groter dan

Getal1 > getal2

>=

 

Groter dan of gelijk aan

Getal1 >= getal2

==

9

Is gelijk aan

Getal1 == getal2

!=

 

Is niet gelijk aan

Getal1 != getal2

&&

13

Logische and

Expr1 && expr2

||

14

Logische or

Expr1 || expr2

?

15

Conditionele expressie

Expr1 ? expr2 : expr3

=

16

assignment

Getal1 = getal2

*=

 

Vermenigvuldigen en asignment

Getal1 *= getal2

/=

 

Delen en assignment

Getal1 /= getal2

%=

 

Modulo en assignment

Getal1 %= getal2

+=

 

Optellen en assignment

Getal1 += getal2

- =

 

Aftrekken en assignment

Getal1 - = getal2

,

17

Komma operator

Expr1 , expr2


Hoofdstuk 4

 

Beslissingen

IF p77

 

Indien er meerdere statements zijn                                 Indien er maar 1 statement per if is

 


if (statement)

{

            statement;

}

else

{

            statement;

}

 

if (statement)

 

            statement;

 

else

 

statement;

 


 

 

if (statement)

{

            statement;

}

Loops

While p81

 

while (statement)

{

            statement;

}

 

Do p84

 

do

 

{

            statement;

           

 

}while(statement)

 

grote verschil is dat een do while loop altijd 1* meer zijn lus gaat doorlopen.

 

Break : om uit een loop te springen.

Continue   je springt uit de loop , maar de loop wordt niet verlaten, je gaat de test doen.

Switch p96

Wordt gebruikt om meerdere mogelijkheden af te testen van een bepaald gegeven.

 

Switch(voorwaarde)

{

case 1: statement

            break; ->  dit moet er altijd staan, anders wordt de test voor alles gedaan, wat wil zeggen dat je eigenlijk teveel test gaat doen, dat is echter overbodig.

default : j

}

 


Hoofdstuk 5

Functies

 

Functies zijn heel belangrijk in de wereld van programmeren, zij zorgen ervoor dat stukjes code die in een programma meerdere malen gebruikt kunnen worde slechts 1* geschreven moeten worden, hierdoor zal de leesbaarheid van het programma aanzienlijk toenemen.

Hoe een functie declareren?

Eigenlijk wordt dit niet declareren genoemd, maar function prototyping.

 

Wat wil dit nu eigenlijk in woorden zeggen?

Voor de goede werking, verwacht de compiler dat er voor elke functie die je gebruikt een soort basisvorm in het begin van het programma, dus voor de functie main, wordt geplaatst.

Vb

#include “iostream.h”

void getal(int nGetal,double dGetal); // voor een functie met variabelen

 

Wat kunnen we hier zien, deze functie zal geen waarden teruggeven, want ze is van het type void.

 

Aanroep van deze functie vb getal(2,2.5);

 

De functie zelf kan er vb als volgt uitzien

 

Void getal(int nGetal,double dGetal)

{

            sqrt(nGetal,dGetal);

}

 

Hoe een functie opstellen?

1.      Zorg ervoor dat de naam van de functie zo nauw mogelijk aansluit bij wat de functie doet, vb als je een functie schrijft die een dfeling doet, noem je die best deling en niet mijn_functie.

2.      Schrijf functies zodanig dat je ze eventueel kan hergebruiken, vb schrijf een functie voor een deling zodanig dat je een willekeurig aantal waardes kan meegeven om te delen, vb van een slechte functie

Void deling(int getal1)

{    getal1/2;

}

deze functie kan enkel delen door 2 en er is geen return.

Double deling (int getal1, int getal2)

{double getal3=0;

            getal3= (getal1/getal2);

            return getal3;

}

Dit is beter, hier kan een getal gedeeld worden door verschillende waarden.

Volgorde van functies

·        Eigenlijk is dat niet zo belangrijk, aangezien in C++ de functies bovenaan gedeclareerd worden weet de compiler waar deze functies staan.

·        Wel kan je ervoor zorgen dat de functies,worden geschreven, vb in de volgorde van aanroep of alfabetisch.

·        In C++ is prototyping niet echt nodig , in die zin, als je de functie plaatst voor ze wordt opgeroepen, wordt dit aanzien als de prototyping.  Let wel op, dat deze manier van werking eigenlijk niet echt goed en overzochtelijk wordt, je zal wel snel ondervinden dat als je grotere programma’s maakt, deze manier van werking voor veel problemen zal zorgen.

 

     

Default waarden

 

Je kan ook default waarden aan een variabele geven, deze wordt gebruikt in het geval er geen waarde wordt meegegeven, deze waarde moeten steeds achteraan de declaratie staan.

 

Prototyping van de functie is vb void delen(int getal1, int getal2);

 

De functie zelf ziet er vb als volgt uit :

 

Void delen(int getal1, int getal2=2)

{

            getal1/getal2;

}

 

als er wel een waarde meegeeft vb delen(15,10), wordt de defaultwaarde genegeerd.

 

Functies die wel een waarde afleveren

 

Het is natuurlijk veel handiger als je een functie kan schrijven die je wel een waarde afleverd waarmee je verder kan rekenen in het programma.

 

Prototyping van zulk een functie

 

double deling( int getal1, int getal2);

 

de functie zelf

 

double deling(int getal1, int getal2)

{double getal3=0;

            getal3= (getal1/getal2);

            return getal3;

}

 

 de oproep van deze functie in vb main is dan als volgt

getal5=deling(getal1,getal2);

 

Static variabelen

Blijven hun waarde behouden van het begin tot het einde van het programma.  Ze worden maar 1 maal aangemaakt, bij de eerste aanroep.

Voordeel? 

Ze behouden hun waarde gedurende het gehele programma, dit kan handig zijn als je een berekening moet maken, daarna iets anders doen, en dan terug de functie aan te roepen waar je gaat verder werken met die variabele.

 

Initialisatie ?

 

Zet het woord static voor de naam van je variabele.

Static variabelen worden altijd met 0 geïnitialiseerd, tenzij je er een andere waarde aan geeft.

 

Opmerking

Het is niet omdat deze variabelen hun waarde blijven behouden dat ze in heel je programma te zien zullen zijn, de levensduur van de waarde is ook beperkt tot de functie waar ze in gedeclareerd zijn.

Globale variabelen

 

Naast static variabelen, die gedurende het ganse programma hun waarde behouden, hebben we ook globale variabelen.  Deze worden ook wel externe variabelen genoemd, maar we gaan ze globale variabelen noemen.

Globale variabelen worden meestal aan het begin van het programma geplaatst, na de prototyping van de functies, maar vóór de functies

 

Grote verschil tussen globale en statische variabelen.  Globale variabelen kunnen door het ganse programma door iedere functie worden gebruikt.  Statische variabelen kunnen enkel worden gebruikt in de functie waar ze in gedefinieerd zijn

,

 

Het is nu niet de bedoeling om al de variabelen globaal te definiëren,  maar enkel in bepaalde situaties zal dit handig zijn.

 

Opmerking : Locale en globale variabelen die dezelfde naam hebben, zullen niet conflicteren, in die zin,een locale  variabele gaat voor op de globale variabele met dezelfde naam.

Reference argumenten

 

Met een reference  argument kan je niet alleen de waarde meegeven maar ook  de variabele zelf.  Dit wordt gebruikt om lokale variabelen toch een andere waarde te laten krijgen vb p127 illustreert dit duidelijk.

 

 

Een referentie variabele wordt door een ampersand voorafgegaan vb int & voorbeeld)

Referentie argumenten zijn dus read en write

 

Value argumenten

 

Deze variabelen behouden hun waarde, je kan ze doorgeven er iets mee doen,maar de    initiële waarde van de variabele blijft ongewijzigd.

 

 

Return by reference

Hiermee wordt bedoeld dat er een referentie van een waarde wordt afgeleverd

Een variabele kan aan de linkerkant van de assignment staan, een waarde niet!

 

Dit wil dus zeggen dat een functieaanroep , van een functie die een referentie aflevertd, aan de linkerkant van de aasignment mag staan

Zie vb p133

 

Return by value

Hier wordt een echte waarde afgeleverd

 

 

Overloading

 

Wil eigenlijk zeggen dat je een functie, met dezelfde naam, meerdere malen gaat definiëren, maar met telkens een verschillend aantal argumenten. Of een ander type van variabelen.

 

Zo kan je vb ook van in de ene functie de andere aanroepen.

 

Zie opgave5.4


Hoofdstuk 6

 

Arrays en pointers

 

Array

 

Een array is eigenlijk een variabele waarin je meerdere waarden van hetzelfde type in kan plaatsen.

Je zal je misschien wel afvragen, hoe werkt dit nu eigenlijk?

Wel eigenlijk elke variabele die je aanmaakt, krijgt een adres in het geheugen, zoals we eerder gezien hebben, kan je dat adres opvragen door voor de variabele & te plaatsen.

Een arrays is eigenlijk niets meer dan een verzameling van pointers naar adressen in het geheugen.

 

Een array begint ALTIJD vanaf 0!!!!!

 

Vb

index

aArray

Naam element

0

 

aArray[0]

1

 

aArray[1]

2

 

aArray[2]

3

 

aArray[3]

4

 

aArray[4]

Declaratie :

 Int aArray[5];

Dit wil zeggen dat er een array van 5 elementen wordt aangemaakt.

Dus wil dit zeggen dat de bovengrens 4 is, wat gebeurd er nu als je bovengrens 5 zou nemen? Wel eigenlijk niets, in die zin, je zal geen directe fout krijgen,  het enige wat er zal gebeuren is dat element 5 naar ergens in het geheugen wijst, waar dat is ???????  Het zou dus wel eens kunnen dat de plaats waar element 5 naar wijst reeds bezet is door een andere waarde (vb iets van het besturingssysteem) waardoor het wel eens kan zijn dat je computer heeel raar doet en evt je computer zal vastlopen.

 

Hoe kan je op een eenvoudige manier een array vullen?

 

Wel met een for-loop

Int aArray[5];

For(int i = 0;i<5;i++)

{

            cout << “Geef een waarde in voor getal “ << I ;

            cin >> aArray[i];

}


 

Top