|
Bij variabelen heb je constante variabelen die je niet kunt veranderen, de waarde staat vast. In klassen kun je dit natuurlijk ook doen, maar in een klasse kun je ook constante methoden declareren wat wil zeggen dat de methode de waarde van leden van de klasse niet mag veranderen. Het voordeel van constante methoden is dat het zo makkelijker is om fouten op te sporen doordat de compiler een error geeft als een constante methode een lidvariabele probeert te veranderen. Een const methode wordt als volgt gedeclareert. void lidfunctie() const; Hoewel je de methoden niet constant hoeft te maken is het dus alleen maar makkelijk om het wel te doen om fouten te voorkomen. Ook is het makkelijk om klassen in header bestanden te zetten in plaats van ze in je programma te definieren waardoor je code beter leesbaar blijft. Zoals je al weet kunnen functies en statements gekoppeld worden tot complexere functies en statements, met klassen kan dit dus ook. Je kunt meerdere klassen aan elkaar koppelen om complexe bewerkingen uit te voeren en toch een goed overzicht houden zodat je later makkelijk aanpassingen kunt maken en delen van de code kunt hergebruiken. Hieronder vind je een voorbeeld van een complexe klasse.
class motor //motor klasse
{
public: //public dataleden
int cylinders;
int motorinhoud;
}
class auto //auto klasse
{
public: //public dataleden
auto(int cylinders, int motorinhoud); //constructor
~auto(){} //inline destructor
int merk;
int kleur;
motor typemotor;
}
auto::auto //constructor van class auto
{
typemotor.cylinders=6;
typemotor.motorinhoud=1.8;
}
Dit is een heel simpel voorbeeldje en zal ook weinig doen maar als voorbeeld is het makkelijker
te begrijpen dan een uitgebreid voorbeeld. Wat ik heb gedaan is een auto klasse gemaakt en een
apparte motor klasse zodat ik de motor zo weer in een andere auto kan zetten zonder al te veel werk.
Binnen de auto klasse kan ik nu dus een motor declareren zoals hier "typemoter". Als dan de auto
klasse wordt gedeclareerd (ergens in je programma) dan wordt de constructor opgeroepen die de
waarden 6 en 1.8 in de lidvariabelen cylinders en motorinhoud zet. Als het programma uiteindelijk
af is gelopen wordt de destructor opgeroepen en wordt het geheugen weer leeggemaakt. De destructor
is hier een inline destructor omdat de definitie ervan binnen de auto klasse zelf gebeurt, en niet
zoals bij de constructor waar dit buiten de klasse gebeurt.Succes Vampire, |