/* OBJECTA2.CPP - olion v„litt„minen referenssiparametrina */ #include #include class jono { int max_pit; char *s; // Yksinkertaistamiseksi tarkistukset puuttuvat! public: jono(int koko=255) { s = new char[koko+1]; s[0]=0; max_pit = koko; printf("Oletusrakentaja: "); tulosta(); } jono(const char *is) { max_pit = strlen(is); s = new char[max_pit+1]; strcpy(s,is); printf("Rakentaja: "); tulosta(); } ~jono() { printf("H„vitt„j„: "); tulosta(); if (max_pit) delete[]s; else printf("Oli jo tuhottu!\n"); max_pit=0; } void tulosta() const { printf("Osoitteet: olio %p, jono %4p Jono %s\n",this,s,s); } friend int vertaa(const jono &j1, const jono &j2); friend void ftulosta(const jono &j); }; int vertaa(const jono &j1, const jono &j2) { printf("Aliohjelmassa vertaa!\n"); j1.tulosta(); j2.tulosta(); return strcmp(j1.s,j2.s); } void ftulosta(const jono &j) { printf("Aliohjelmassa ftulosta!\n"); j.tulosta(); printf("Pois aliohjelmassa ftulosta!\n"); } int main(void) { printf("\n---------------------------------------------------\n"); jono j1("j1"), j2("j2"); printf("Menossa aliohjelmaan ftulosta:\n"); ftulosta(j1); printf("Menossa aliohjelmaan tulosta:\n"); j1.tulosta(); printf("Vertailu:\n"); int i = vertaa(j1,j2); printf("Vertailun tulos %d\n",i); return 0; }