FONForum http://678540.1rf3m2gpa.asia/ |
|
Konstruktor kopije u Objektnom Pascal-u - - pitam se pitam http://678540.1rf3m2gpa.asia/viewtopic.php?f=8&t=1218 |
Stranica 1 od 1 |
Autoru: | drackula [ 11.04.2002. 07:36:01 ] |
Tema posta: | |
E sad procito sam onu knjigu za nasu dragu prvu godinu iz "dragog" nam Objektnog Pascala. E sada nigde nisam primetio da se pominje konstruktor kopije. Da li to znaci: 1. Da on ne postoji u objektnom pascalu 2. Ne spada bas u osnove , ipak je to visi nivo pa mi nije mesto u toj knjizi. |
Autoru: | zlatko [ 11.04.2002. 08:15:13 ] |
Tema posta: | |
Autoru: | drackula [ 11.04.2002. 10:11:21 ] |
Tema posta: | |
U C++ -u ga bogami ima pogledaj malo bolje A predstavlja konstruktor koji uzima kao parametar upucivac na objekat svoje klase. E sada mene zanima moze li tako nesto u pascalu. |
Autoru: | zlatko [ 11.04.2002. 11:49:52 ] |
Tema posta: | |
Je li to ono kad se iz jednog konstruktora poziva drugi sa this(nesto) ili samo koriscenje pokazivaca (reference) na tekuci objekat this. Evo primera za obe stvari (u javi posto slabo stojim sa C++ a razlike su minimalne): Cvet (String s) { System.out.println("Agument tipa String "); ime = s; // ime je atribut klase Cvet } Cvet (String s, int latice) { this(s); //poziv prvom konstruktoru this.brLat = s; //referenca na tek. obj. a brLat je atrib. System.out.println("Argumenti tipa String i int"); } Cvet() { this("ljubicica", 5); System.out.println("Konstruktor bez argumenata"); } To o cemu govoris verovatno postoji i u javi samo ga drugacije zovu. |
Autoru: | drackula [ 11.04.2002. 12:42:47 ] |
Tema posta: | |
S obzirom da JAVA nema pokazivace niti reference(upucivae) gotovo sam siguran da oni ne postoje. U C++ -uga definises ovako primera radi Class kuca { kuca() kuca(const kuca &) //konstruktor kopije } |
Autoru: | zlatko [ 11.04.2002. 17:00:33 ] |
Tema posta: | |
Ko ka |
Autoru: | drackula [ 11.04.2002. 19:28:49 ] |
Tema posta: | |
Pa to ti znaci sledece, konstruktor koji uzima referencu na objekat svoje klase, kako bi se to lepo reklo. A koristi se onda kad treba da inicializujes jedan objekat recimo B kopijom drugog objekta recimo A. E sad to je u C++-u a mene zanima kako da to izvedem ako moze u pascal-u. A evo i primera class CAT { public: CAT(); CAT(const CAT &) ~CAT(); int GetAge() const {return *itsAge} int GetWeight const {return *itsWeight;} void SetAge(int age) {*itsAge=age; } private int *itsAge; int itsWeight; } CAT::CAT() { itsAge = new int; itsWeight = nw int; *itsAge = 5; *itsWeight = 9; } CAT::CAT(const CAT &rhs) //konstruktor kopije { itsAge = new int; itsWeigt = new int; *itsAge = rhs.GetAge(); *itsWeight = rhs.GetWeight(); } CAT::~CAT { delete itsAge; intAge = 0; delete itsWeight itsWeight = 0; } int main() { CAT frisky; //inicializacija objekta kopijom friski: CAT boots(frisky) } eto ovaj primer sam izvukao iz knjige iskreno nisam mogo da se setim sopstvenog |
Autoru: | zlatko [ 12.04.2002. 08:40:38 ] |
Tema posta: | |
Vidim |
Autoru: | drackula [ 12.04.2002. 17:11:05 ] |
Tema posta: | |
Pa bas za 21 dan , hmmm reci cu tebi ono sto kazem svima mnozi to sa 10 ipak je 210 dana Za tu knjigu mi je trebalo oko 6 meseci da se predjem i moram ti reci da je odlicna bas brate 21 dan oni ga preterase. A gledo sam i Krausov C++ sa ETF-a kao i Thinking in C++ by Bruce Eckel Sto se primera tice ovo mi je prvo dopalo pod ruku. A od literature za javu imam original iz Sun-a njihovo izdanje. "The Java Tutorial Third Edition" |
Autoru: | zlatko [ 13.04.2002. 18:52:11 ] |
Tema posta: | |
To za 21 dan je |
Autoru: | Vladimir Stankovic [ 15.04.2002. 22:53:37 ] |
Tema posta: | |
Zlatane,mislim da nisi shvatio poentu konstruktora kopije u C++-u. Osnovna razlika izmedju konstruktora kopije i obicne overloadovane funkcije je sledeca: postoji podrazumevani konstruktor kopije (kao i podrazumevani obican konstruktor i destruktor) koji se poziva svaki put kada objekat u funkciji prosledis kao vrednosni parametar (prenos po vrednosti) ili kada pozoves funkciju koja za povratnu vrednost ima objekat (ne pokazivac na objekat). Drackula je vec naveo primer iz Libertijeve knjige, ai vazno je istaci sledece: AKO SAM NAPRAVIS KONSTRUKTOR KOPIJE onda vise nece postojati podrazumevani konstruktor kopije (za tu klasu). Uvek kada napises nesto tipa: int nekaFunkcija (cat ); // objekat klase cat je vrednosni parametar // ili cat nekaFunkcija(); // funkcija vraca objekat tipa cat //Zlatane, od tebe ocekujem pohvalu za koriscenje Madjarske notacije ) poziva se konstruktor kopije koji smo sami napisali. Zato je bitno,ako ga vec sami pisemo, da ga napisemo kako treba. A Liberti je istakao karakteristican primer u kom klasa cat ima clan pokazivac koji se alocira na heap-u. U takvom slucaju moramo sami da pisemo konstruktor kopije. |
Autoru: | khmkhm [ 18.04.2002. 17:07:51 ] |
Tema posta: | |
Ne, ne, decko, tako se ne prave aeroplani |
Stranica 1 od 1 | Sva vremena su u UTC + 1 sat |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |