/* OBJECTAR.CPP - olion v„litt„minen arvoparametrina */ #include #include class cJono { int max_pit; char *s; // Yksinkertaistamiseksi tarkistukset puuttuvat! public: cJono(int koko=255) { s = new char[koko+1]; s[0]=0; max_pit = koko; printf("Oletusrakentaja: "); tulosta(); } cJono(const char *is) { max_pit = strlen(is); s = new char[max_pit+1]; strcpy(s,is); printf("Rakentaja: "); tulosta(); } ~cJono() { 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(cJono j1, cJono j2); friend void ftulosta(cJono j); }; int vertaa(cJono j1, cJono j2) { printf("Aliohjelmassa vertaa!\n"); j1.tulosta(); j2.tulosta(); return strcmp(j1.s,j2.s); } void ftulosta(cJono j) { printf("Aliohjelmassa ftulosta!\n"); j.tulosta(); printf("Pois aliohjelmassa ftulosta!\n"); } int main(void) { printf("\n---------------------------------------------------\n"); cJono 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; }