previous next Up Title Contents Index

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.163 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.164 Aika rajoitettujen kokonaislukujen avulla

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


previous next Up Title Contents Index