Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

9.3.6 Oletusmuodostaja (default constructor)

Nyt ei kuitenkaan voida esitellä oliota ilman alkuarvoa

	cAika aika;

Kääntäjä antaisi esimerkiksi virheilmoituksen:

	Error:  aikacla.cpp(26,14):Could not find a match for 'cAika::cAika()'

Parametritöntä muodostajaa sanotaan oletusmuodostajaksi ( default constructor). Sellainen on luokalla aina ilman muuta, jos luokalle ei ole esitelty yhtään muodostajaa. Jos luokalle esitellään muodostaja, ei oletusmuodostaja enää tulekaan automaattisesti.

Meidän pitäisi päättää nyt paljonko kellomme on, jos sitä ei erikseen ilmoiteta. Olkoon kello vaikka 0:0, eli keskiyö. Esittelemme oletusmuodostajan

olioalk\aikacla2.cpp - lisätään oletusmuodostaja

	... 
	class cAika {
	  int h,m;
	public:
	  cAika()                   { h = 0;  m = 0;  }
	  cAika(int ih, int im)     { h = ih; m = im; }
	  void lisaa(int lisa_min)  { ... }
	  void tulosta() const      { ... }
	};
	
	
	int main(void)
	{
	  cAika a1(12,15), a2(13,16), a3(14,25);
	  a1.lisaa(55);    a1.tulosta();
	...
	  cAika aika;
	  aika.tulosta();
	  return 0;
	}

Oletusmuodostajaa "kutsutaan" hieman epäloogisesti ilman sulkuja

	cAika aika;

eikä

	cAika aika(); 	:-(

kuten muiden parametrittömien funktioiden kutsusta saattaisi päätellä! Mainittu rivi nimittäin tarkoittaisi parametrittömän cAika tyyppisen funktion prototyyppiä.


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys