Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Muodostimet

...

(Constructor)

...

Aina,

...

kun

...

luodaan

...

uusi

...

olio

...

suoritetaan

...

automaattisesti

...

muodostin-funktio.

...

Lisäksi

...

kutsutaan

...

mahdollisen

...

vanhemman

...

muodostinta,

...

sekä

...

kaikkien

...

olioiden

...

muodostimia,

...

mistä

...

luokka

...

koostuu.

...

Muodostimen

...

nimi

...

on

...

sama

...

kuin

...

luokan

...

nimi.

...

Esimerkki

...

1:

...

Muodostin.

{
Code Block
}
class CElain
{
public:
    CElain();   // Muodostin
};
{code}

Yllä

...

olevassa

...

esimerkissä

...

on

...

esitelty

...

parametriton

...

muodostin

...

(ilman

...

toteutusta).

...

Muodostimessa

...

voidaan

...

antaa

...

oliolle

...

alkuarvoja,

...

varata

...

muistia

...

jne.

...

Jos

...

muodostimelle

...

halutaan

...

antaa

...

parametreja,

...

laitetaan

...

ne

...

sulkuihin,

...

kuten

...

mihin

...

tahansa

...

funktioon.

...

Muodostin

...

ei

...

palauta

...

mitään,

...

joten

...

nimen

...

eteen

...

ei

...

saa

...

laittaa

...

mitään

...

tyyppiä,

...

ei

...

edes

...

void-määrittelyä.

...

Esimerkki

...

2:

...

Luokkaan

...

CElain

...

on

...

lisätty

...

muodostin,

...

joka

...

antaa

...

luokan

...

oliolle

...

heti

...

nimen

...

ja

...

massan.

{
Code Block
}
class CElain
{
private:
    char m_Nimi[100];
    float m_Massa;

public:
    CElain(char Nimi[], float Massa);   // Muodostin
    bool AsetaNimi(char Nimi\[\]);
    bool KysyNimi(char Nimi\[\]);
    bool AsetaMassa(float Massa);
    bool KysyMassa();
};
{code}

Muodostimelle

...

täytyy

...

tehdä

...

vielä

...

toteutus,

...

joka

...

voi

...

olla

...

esim.

...

seuraavanlainen:

Code Block

CElain::CElain(char Nimi\[\], float Massa)
{
     strcpy(m_Nimi, Nimi);
     m_Massa = Massa; 
}

Luokalla

...

on

...

aina

...

oletusmuodostin,

...

esim

...

CElain::CElain(),

...

mutta

...

jos

...

ohjelmoija

...

tekee

...

yhdenkin

...

oman

...

muodostimen

...

ei

...

oletusmuodostinta

...

voida

...

enää

...

käyttää.

...

Yllä

...

olevassa

...

esimerkissä

...

tulisi

...

kaikki

...

CElain-luokan

...

oliot

...

muodostaa

...

antamalla

...

niille

...

nimi

...

ja

...

massa.

...

Esimerkiksi:

...

CElain

...

kissa("misu",

...

5.2);

...


Mutta

...

koska

...

oletusmuodostinta

...

ei

...

voida

...

enää

...

käyttää,

...

seuraava

...

ei

...

ole

...

validia

...

koodia:

...

CElain

...

kissa;

...


Huom

...

!

...

Jos

...

parametritonta

...

muodostinta

...

halutaan

...

käyttää,

...

tulee

...

myös

...

se

...

lisätä

...

luokkaan:

...

Wiki Markup
class CElain {
...
public:
      CElain();
    CElain(char Nimi\[\], float Massa);
...
\\

...