h4. 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.
Esimerkki 6. Vakio jäsenmuuttujan alustaminen.
class CYmpyra
{
private: const float m_Pii; // Vakio, koska piin arvo ei muutu. public:
CYmpyra();
}
;
\\
// Muodostimen toteutus:
CYmpyra::CYmpyra() :
m_Pii(3.145) // Kaikki const-tyyppiset muuttujat alustetaan initialisointilistassa.
{
}
Tässä esimerkissä esitellään luokka, jolla on yksi jäsenmuuttuja, joka on vakio. Se täytyy alustaa muodostimen initialisointilistassa.
Esimerkki 7. Olio vakiona jäsenmuuttujana.
class CKannet
{
{ public public: CKannet(const char Nimi\[\]) \{ \}
} };
;
class CKirja
{ private: const CKannet m_Kannet; // Vakio public: CKirja(); }
;
\\
// Muodostimen toteutus:
CKirja() :
m_Kannet("Moby Dick") // Tämä kutsuu CKannet-luokan muodostinta.
{
}
Tässä esimerkissä käytetään koostumista. HUOM\! Initialisointilistassa kutsutaan nyt CKannet-luokan muodostinta.
\\
h4. 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 8. Staattisen vakio-jäsenmuuttujan alustaminen.
class CLuokka
{
private:
const static int VAKIO = \-6; // Yksi yleinen tapa on kirjoittaa vakiot ISOILLA KIRJAIMILLA. ei pakollista.
public:
public: const int HaeVakio()
{ return VAKIO; }
};
int main()
{ CLuokka l; printf("VAKIO = %d", l.HaeVakio()); return 0; }
----
h4. |