Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

16.3.1 new, C++

C++:ssa tilan varaamisen kannattaa ilman muuta käyttää new- operaattoria. Tässä on se suuri etu, että luonnin yhteydessä kutsutaan kunkin luotavan olion muodostajaa ja näin mikään syntyvistä olioista ei jää ilman alkuarvoa. Ainoastaan luotaessa perustietotyyppien mukaisia muuttujataulukoita, voidaan puolustella mallocin käyttöä, tällöinkin vain jos taulukon kokoa pitää jälkeenpäin muuttaa.

Esimerkiksi uusi jäsen lisättäisiin seuraavalla aliohjelmalla:

runko.1\kerho.cpp - jäsenen lisääminen

	const char *cKerho::lisaa(const cJasen &jasen)
	{
	  cJasen *uusi_jasen;
	
	  if ( jasenia >= max_jasenia ) return LIIKAA_JASENIA;
	  uusi_jasen = new(nothrow) cJasen(jasen); // uudelle jäsenelle jäsenen tiedot 
	  if ( uusi_jasen == NULL ) return EI_SAA_JASENTA;
	
	  jasenet[jasenia] = uusi_jasen;
	  jasenia++;
	
	  return NULL;
	}

Itse asiassa edellä on kutsuttu Jäsen-luokan kopiointimuodostajaa ( copy constructor), joka luo uuden olion ja tekee siitä samalla sisällöltään samanlaisen kuin muodostajan parametrinä viety olio. Kopiointimuodostajan parametrilistassa on tasan yksi parametri ja sen tyyppi on sama kuin luokan tyyppi.


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys