Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

18.4 Tyypinmuunnosoperaattori ja sijoitus

Esimerkin rajoit.cpp toinen +- operaattori voitaisiin välttää tekemällä muunnosoperaattori, joka muuttaa cRajoitettu - tyyppisen olion kokonaisluvuksi:

	class cRajoitettu {
	...
	  operator int() { return arvo; } 
	};

Tällöin yhteenlaskussa

	i = 20 + m2;

m2 ensin muuttuu kokonaisluvuksi ja sitten normaali kokonaislukujen yhteenlasku huolehtii lopusta. Muoto

	m1 = 20 + m2;

saataisiin toimimaan määrittelemällä sijoitusoperaattori:

	class cRajoitettu {
	...
	  cRajoitettu &operator=(int i) { aseta(i); return *this; }
	};

Tällöin sijoituslauseen oikea puoli lasketaan kokonaislukuna ja sitten tämä kokonaisluku sijoitetaan em. sijoitusoperaattorilla. Sijoitusoperaattorin tulee palauttaa sijoituksen kohteena olevan luokan tyyppinen tulos, jotta ketjusijoitus

	m1 = m2 = 20;

olisi mahdollinen.

Tehtävä 18.159 Ajan lisääminen

Aikaisemmin oli esitetty cAika- luokka. Lisää luokkaan += - operaattori ja + - operaattori joiden ansiosta seuraavat sijoitukset olisivat mahdollisia
	cAika a1(10,30),a2(15,55);
	a1 += 50;
	a2 = a1 + 20;

Tehtävä 18.160 Aika rajoitettujen kokonaislukujen avulla

Miten voisit tehdä luokan cAika käyttämällä edellä ollutta cRajoitettu- luokkaa. Tarvitseeko cRajoitettu joitakin muutoksia?

Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys