Thuis
Contacten

    Hoofdpagina


Programmeren in C++ voor beginners

Dovnload 5.04 Mb.

Programmeren in C++ voor beginners



Pagina44/49
Datum25.10.2017
Grootte5.04 Mb.

Dovnload 5.04 Mb.
1   ...   41   42   43   44   45   46   47   48   49

Const methoden

Een methode kan zelf ook const zijn. Als een methode const is, garandeerd deze methode dat de variabelen van de klasse niet worden gewijzigd. Getters zijn bijna altijd const.


struct Klok

{

int GetUren() const { /* code */ }



int GetMinuten() const { /* code */ }

//Rest


};




Gebruikt altijd const waar mogelijk!

Schrijven we toch onderstaande code, dan verschijnt de foutmelding daaronder.


struct Klok

{

int GetUren() const { mUren = 0; return mUren; }

//Rest

};
[C++ Error] Unit1.h(40): E2024 Cannot modify a const object


Zouden we GetUren niet const maken, dan levert onderstaande code de foutmelding daaronder op:
const Klok k;

const int uren

= k.GetUren(); //GetUren is onterecht geen const methode


[C++ Warning] Unit1.cpp(21): W8037 Non-const function Klok::GetUren() called for const object




Geef de voorkeur aan compile- en link-time errors boven run-time errors.

Zou Klok niet veranderd mogen worden (omdat deze bijvoorbeeld in een bibliotheek zit), dan moeten we


//Klok is uit de VBL (Very Bad Library)

const Klok k;

//GetUren is onterecht geen const methode

//Dan maar een const_cast.

//Grumble, grumble...



const int uren = (const_cast(&k))->GetUren();
Bovenstaande code gaan we niet dieper op in, maar merk wel op dat er een Klok* wordt gemaakt en dat GetUren met een pijltje inplaats van met een punt wordt aangesproken.
1   ...   41   42   43   44   45   46   47   48   49


Dovnload 5.04 Mb.