Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

Jäsenmuuttujat (Member Variables)

Jäsenmuuttujien esittely

Jäsenmuuttujat esitellään kuten normaalit muuttujat, tosin class {}-rakenteen sisällä. Ne esitellään monesti m_-etuliitteellä. Tämä ei ole mitenkään pakollista, mutta se helpottaa koodin lukemista. Niihin päästään käsiksi luokasta luodun olion kautta tai luokan sisällä normaaliin tapaan. 

Anchor
esim1
esim1

Esimerkki 1. Jäsenmuuttujien esittely.

...

Code Block

class 

...

Auto
{
public:   // kts Näkyvyys

...

 

...

   char  

...

nimi[100

...

];   // Eläimen nimi, koko 100 merkkiä.

...

    float massa;   

...

 

...

 

...

  // Eläimen massa.
};

Luokka CElain pitää sisällään kaksi jäsenmuuttujaa: m_Nimi ja m_Massa. Niihin päästään käsiksi luokasta luodun olion kautta. Kts esimerkki 4.

Anchor
nakyvyys
nakyvyys

Jäsenmuuttujien näkyvyys

Jäsenmuuttujaa voi muuttaa luokan metodi, luokan perillisen metodi tai joku ulkopuolinen funktio. Riippuen siitä mitkä tahot pääsevät jäsenmuuttujaan kiinni, puhutaan yksityisestä, suojatusta tai julkisesta jäsenmuuttujasta.

Jäsenmuuttujien näkyvyys eri paikoissa

...

...

luokan funktiot näkevät

...

perilliset näkevät

...

ulkopuoliset näkevät

...

private

kyllä

ei

ei

protected

kyllä

kyllä

ei

public

kyllä

kyllä

kyllä

Anchor
esim2
esim2

Esimerkki 2. Jäsenmuuttujien näkyvyys.unmigrated-wiki-markup

Code Block

class 

...

Auto
{
private:   // saatavissa vain luokan

...

 metodeilla

...

    char 

...

nimi[100

...

];

...

    float massa;

public:   // voidaan käyttää luokan ulkopuolelta

...

    bool AsetaNimi(char 

...

nimi[

...

]);

...

    bool KysyNimi(char 

...

nimi[

...

]);

...

    bool AsetaMassa(int 

...

massa);

...

    bool KysyMassa();
};

...


Jäsenmuuttujien käyttö

Jäsenmuuttujiin voidaan viitata luokan sisällä ja riippuen näkyvyydestä, myös luokan ulkopuolelta.

Anchor
esim3
esim3

Esimerkki 3. Esimerkin 1 jäsenmuuttujien käsittely luokan sisällä.

Otsikkotiedosto (. Wiki Markuph):

Code Block

class 

...

Auto
{
public:

...

    char 

...

nimi[100

...

];   

...

            // Eläimen nimi, koko 100 merkkiä.

...

    float 

...

massa; 

...

      

...

           // Eläimen massa.

...

    void AsetaArvot(char, float);   // Lisätään metodi muuttujien arvojen asettamiseen.
};

...


Toteutus (.cpp):

Code Block

...

// Metodin AsetaArvot() toteutus.
void 

...

Auto::AsetaArvot(char 

...

nimi[

...

], float 

...

massa)
{

...

    strcpy(

...

nimi, 

...

this->nimi);

...

  // Kopioidaan parametrina saatu Nimi jäsenmuuttujaan m_Nimi.

...

    this->massa 

...

= 

...

massa;   

...

    // 

...

Sijoitetaan

...

 parametrina saatu Massa

...

 jäsenmuuttujaan m_Massa.
}

Pääohjelma (esim main.cpp):

Code Block

int main()

...


{

...


    Auto auto;
    auto.AsetaArvot("

...

Nissan",

...

 1312);
}

Anchor
esim4
esim4

}

Esimerkki 4. Esimerkin 1 jäsenmuuttujien käsittely luokan ulkopuolella.

Code Block

int main()

...


{
    Auto Nissan;
    Nissan.massa = 1312;
    strcpy(Nissan.nimi, "Sport");
}
Note

Muuttujien pitää olla public-tyyppisiä kun halutaan muuttaa jäsenmuuttujia luokan ulkopuolelta.