Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3
Wiki Markup
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}