Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Wiki Markup
h3. Muodostimen initialisointilista  (Initialization List)

...



C++-kielessä luokan jäsenmuuttujat on tarkoitus alustaa ns.  initialisointilistassa. Jotkin muuttujatyypit, kuten

...

Esimerkki 3: Luokan jäsenmuuttujan alustaminen initialisointilistassa.

class CElain
{
public:
    CElain();
    void Tulosta();

private:
    int m_Muuttuja;
};

 vakiomuuttujat ja referenssit, tulee  alustaa initialisointilistassa. Lisäksi joissain tapauksissa  initialisointilistassa alustaminen on nopeampaa kuin muodostimessa  'normaaliin tapaan'. Tämä johtuu siitä, että kun kopioidaan ei  sisäänrakennettuja tyyppejä (int, float, jne) joudutaan 'normaaliin  tapaan' tehtäessä muodostamaan tilapäiskopio kopioitavasta objektista.  Tätä ei tapahdu initialisointilistassa, jos

Esimerkki 3: Luokan jäsenmuuttujan alustaminen  initialisointilistassa.

{code}
class CElain
{
public:
    CElain();
    void Tulosta();

private:
    int m_Muuttuja1;
    int m_Muuttuja2;
};

CElain::CElain()

...

 :    // Initialisointilista alkaa kaksoispisteellä
    m_Muuttuja1(0),   // Alustetaan luokan jäsenmuuttuja m_

...

Muuttuja1 arvoon

...

 0.
    m_Muuttuja2(-57)  // Alustetaan luokan jäsenmuuttuja m_Muuttuja2 arvoon -57.
{
}

void CElain::Tulosta()

...


{
    printf("m_

...

Muuttuja1 = %d\n", m_Muuttuja1);
    printf("m_Muuttuja2 = %d\n", m_Muuttuja2);
}

int main()
{
    CElain kissa;
    kissa.Tulosta();

...


}