Versions Compared

Key

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

...

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.

Anchor
esim1
esim1

Esimerkki 1: Muodostin. Parametriton muodostin.

Code Block
class CElain
{
public:
    CElain();   // Parametriton Muodostinmuodostin
};

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ä.

Anchor
esim2
esim2

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);   // Parametrillinen Muodostinmuodostin
    bool AsetaNimi(char Nimi\[\]);
    bool KysyNimi(char Nimi\[\]);
    bool AsetaMassa(float Massa);
    bool KysyMassa();
};

...

Code Block
CElain::CElain(char Nimi\[\], float Massa) // Parametrillinen muodostin
{
     strcpy(m_Nimi, Nimi);
     m_Massa = Massa;
}

...

Code Block
CElain kissa("misu", 5.2);

Mutta koska oletusmuodostinta ei voida enää käyttää, seuraava ei ole validia koodia:

Code Block
CElain kissa;

...

Note

Jos parametritonta muodostinta halutaan käyttää, tulee myös se lisätä luokkaan:

Code Block
class CElain {
...
public:
    CElain();                         // Parametriton muodostin
    CElain(char Nimi\[\],  float Massa); // Parametrillinen muodostin
...