Prev Next Up Title Contents Index

Peritään suoraan useampia luokkia


Voidaan myös periä useita luokkia samalla:

multi2.cpp - oikea moniperintä

	/* MULTI2.CPP - oikea moniperintä */
	#include <stdio.h>
	
	class cAsunto {
	  int huoneita;
	public:
	  cAsunto(int ih=1) : huoneita(ih) {}
	  void tulosta() const { printf("Huoneita: %d",huoneita); }
	};
	
	class cLaiva {
	  double pituus;
	public:
	  cLaiva(double ipit=10.0) : pituus(ipit) {}
	  void tulosta() const { printf("Pituus: %3.1lf m",pituus); }
	};
	
	class cAsuntolaiva : public cAsunto, public cLaiva {
	public:
	  cAsuntolaiva(int ih=1,double ipit=5.0) : cAsunto(ih) , cLaiva(ipit)  {}
	  void tulosta() const {
	    cAsunto::tulosta(); printf(" "); cLaiva::tulosta();
	  }
	};
	
	int main(void)
	{
	  cAsuntolaiva koti(2,5.8);
	  koti.tulosta(); printf("\n");
	  return 0;
	}

Tehtävä 1.25 Kutsujärjestys

Tutki missä järjestyksessä muodostajia ja hajottajia kutsutaan multi2.cpp:ssä.
Perintähierarkia olisi seuraavan näköinen:
Click here for Picture 

Kuva . Moniperintä

Huomautus: Tämä esimerkki on juuri ja juuri ISA-säännön mukainen. Itse asiassa perimällä ISA-säännön mukaan, on moniperintä varsin harvinainen!

Tehtävä 1.26 Asuntolaiva

Lisää asuntolaivaan jokin oma ominaisuus jota ei ole laivalla eikä asunnolla.


Prev Next Up Title Contents Index