h2. Vakiot jäsenmuuttujina
Luokkien jäsenmuuttujat, jotka ovat const-tyyppisiä, tulee aina alustaa initialisointilistassa. Jäsenmuuttujia, jotka on määritelty vakioiksi, ei voi muuttaa ajon aikana.
h3. Esimerkki 1. Vakio jäsenmuuttujan alustaminen.
{code}
class CYmpyra
{
public:
CYmpyra();
private:
const float m_Pii; // Vakio, koska piin arvo ei muutu.
};
{code}
{code}
// Muodostimen toteutus:
CYmpyra::CYmpyra() :
m_Pii(3.145) // Kaikki const-tyyppiset muuttujat alustetaan initialisointilistassa.
{
}
{code}
Tässä esimerkissä esitellään luokka, jolla on yksi jäsenmuuttuja, joka on vakio. Se täytyy alustaa muodostimen initialisointilistassa.
Esimerkki 2. Olio vakiona jäsenmuuttujana.
{code}
class CKannet
{
public:
CKannet(const char Nimi[])
{
}
};
{code}
{code}
class CKirja
{
public:
CKirja();
private:
const CKannet m_Kannet; // Vakio
};
{code}
{code}
// Muodostimen toteutus:
CKirja() :
m_Kannet("Moby Dick") // Tämä kutsuu CKannet-luokan muodostinta.
{
}
{code}
Tässä esimerkissä käytetään koostumista. HUOM\! Initialisointilistassa kutsutaan nyt CKannet-luokan muodostinta.
h2. Staattiset vakiot jäsenmuuttujina
Luokkien jäsenmuuttujat, jotka ovat const static-tyyppisiä, *pitää* alustaa suoraan esittelyssä, sillä ne ovat luokkakohtaisia (static) ja vakioita (const).
Esimerkki 3. Staattisen vakio-jäsenmuuttujan alustaminen.
{code}
class CLuokka
{
public:
const int PalautaVakio()
{
return VAKIO;
}
private:
const static int VAKIO = -6; // Yksi yleinen tapa on kirjoittaa vakiot ISOILLA KIRJAIMILLA. ei pakollista.
};
{code}
{code}
int main()
{
CLuokka luokka;
printf("VAKIO = %d", luokka.PalautaVakio());
return 0;
}
{code} |