// miuku.cpp -esimerkki oliosta olion sis„ll„ (koostaminen) // - esimerkki oletusmuodostajasta // - esimerkki muodostajan kutsusta muodostajassa /vl-97 #include #include class cElain { string nimi; int paino; int ika; public: void sijoita(const char *n,int p, int i) { nimi = n; paino = p; ika = i; } cElain() { sijoita("???",0,0); } // Oletusmuodostaja cElain(const char *n, int p, int i) { sijoita(n,p,i); } void tulosta() { cout << "Nimi: " << nimi << endl; cout << "Paino: " << paino<< endl; cout << "Ik„: " << ika << endl; } }; class cLaji { string laji; cElain elain; int nro; public: cLaji() { laji = "???"; nro = 0; } // elain alustuu oletusmuodostajalla /* Huono: cLaji(const char *s, const cElain &e, int n) { laji = s; elain = e; nro =n; } parempi: */ cLaji(const char *s, const cElain &e, int n) : laji(s), elain(e), nro(n) { ; } // Muodostajan kutsu! void tulosta() { cout << "Laji: " << laji << endl; elain.tulosta(); cout << "Nro: " << nro << endl; } void Laji(const char *s) { laji = s; } void Nro(int n) { nro = n; } void sijoita(const char *nimi,int p, int i) { elain.sijoita(nimi,p,i); } }; int main(void) { cLaji miuku; miuku.tulosta(); // Nyt miuku tulostuu oletuksen mukaisena miuku.Laji("Kissa"); miuku.sijoita("Miuku",3,5); miuku.Nro(5); miuku.tulosta(); // Nyt miukussa on halutut tiedot cLaji musti("Koira",cElain("Musti",17,2),12); musti.tulosta(); // Taalla on halutut tiedot valmiina return 0; }