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