C++:ssa on yksi erityinen metodi: muodostaja (konstruktori, rakentaja, constructor), jota kutsutaan muuttujan syntyessä. Muodostajan tehtävä on alustaa olion tila ja luoda mahdollisesti tarvittavat dynaamiset muistialueet. Näin voidaan järjestää se, että olion tila on aina tunnettu olion syntyessä.
Joissakin oliokielissä konstruktori ilmoitetaan omalla avainsanallaan. C++:ssa muodostaja on metodi, jolla on sama nimi kuin luokalla. Muodostajia voi olla useitakin. Muodostaja on aina tyypitön, siis ei edes void- tyyppiä.
#include <iostream.h> #include <iomanip.h> class cAika { int h,m; public: cAika(int ih, int im) { h = ih; m = im; } void lisaa(int lisa_min) { int yht_min = h * 60 + m + lisa_min; h = yht_min / 60; m = yht_min % 60; } void tulosta() const { cout << setfill('0') << setw(2) << h << ":" << setw(2) << m << endl; } }; int main(void) { cAika a1(12,15), a2(13,16), a3(14,25); a1.lisaa(55); a1.tulosta(); a2.lisaa(27); a2.tulosta(); a3.lisaa(39); a3.tulosta(); return 0; }
Esimerkissämme muodostaja on esitelty 2-parametriseksi
cAika(int ih, int im) { h = ih; m = im; }
ja sitä "kutsutaan" olion esittelyn yhteydessä
cAika a1(12,15);