Super
Ot: Dragomir
Na: 7-08-2005@11:44 GMT+2
Otsenka: 1/NeutralenMnogo dobra, statiia. Malko e na visok stil.
Ne razbrah zashto obektite se suzdavat s kopirasht konstruktor, a ne s initsializirasht.
Zashto ima my_class *point(new my_class(ds,ds,ds));??? Kade e ukazatelia za tozi new obekt. Tova ne e li vremenen leak, do kraia na tekushtiia ssope. SHTe ia procheta oshte niakolko puti dokato ia razbera napulno:)
[Otgovori na tozi komentar]
Da
Ot: Dragomir
Na: 7-08-2005@11:47 GMT+2
Otsenka: 1/NeutralenMai go razbrah zashto. Za da mozhe da se poluchi pravilno imeto, "kopie na ....". Taka li e?
[Otgovori na tozi komentar]
kum: Super
Ot: vesso <vesok< at >yahoo __tochka__ com>
Na: 8-08-2005@11:41 GMT+2
Otsenka: 1/NeutralenMersi za otsenkata!
>...zashto obektite se suzdavat s kopirasht konstruktor, a ne s initsializirasht
Za koi red stava duma? Red kato:
my_class object("auto object");
polzva imenno initsializirasht konstruktor. Az lichno predpochitam tozi variant pred
my_class object = my_class("auto object");
zashtoto se tvurdi che pri vtoriia variant niakoi kompilatori purvo suzdavali vremenno kopie na my_class, posle go kopirali v promenlivata object i nakraia razrushavali vremennoto kopie, koeto e neefektivno.
Programata polzva kopirasht konstruktor edinstveno v auto_example(), kato chast ot vector_of_objects.push_back(... - kakto pokazva i rezultata.
> Zashto ima my_class *point(new my_class(ds,ds,ds));???
Ami niama takuv red ;-) Podoben red e:
my_class * pointer(new my_class("dynamically allocated"));
Koeto e ravnosilno na:
my_class * pointer = new my_class("dynamically allocated");
Prosto predpochitam vinagi da polzvam initsializatsiia na obekt (int i(0);) vmesto zadavane na purvonachalna stoinost (int i=0;) - vupros na lichen stil, doniakude poroden ot otgovora na po-gorniia vupros.
>Kude e ukazatelia za tozi new obekt
v promenlivata s ime pointer
>Tova ne e li vremenen leak, do kraia na tekushtiia ssope.
Ne e "vremenen leak" - prosto si zadeliame pamet, polzvame ia i nakraia ia osvobozhdavame.
>SHTe ia procheta oshte niakolko puti dokato ia razbera napulno
Po-dobre ia izpulni postupkovo v debuger, stava po-iasno.
[Otgovori na tozi komentar]
Otnoso kopirashtiiat konstruktor
Ot: Andrei
Na: 8-08-2005@11:55 GMT+2
Otsenka: 1/NeutralenVizhdal sum tehnika, puk i si mislia, che v "Efektiven S++" se spomenavashe, che ako naistina ne se nalaga da ima takuv konstruktor e dobre toi da se deklarira kato chasten (private) i mozhe da ne se implementira. Po takuv nachin sluchaini greshki ot tipa na suzdavane na vremenni obekti se otkrivat na faza kompilatsiia.
Oshte edin resurs po otnoshenie na suvremenen metod za rabota s pametta s izpolzvane na S++ e opisan tuk: http://www.scs.cs.nyu.edu/~dm/c++-new.h...
Az lichno mnogo se nakefih na obiasnenieto - mnogo dobro, prostranstveno. Tozi universitetski prepodavatel si razbira ot rabotata i ot svirene na elektricheska kitara iavno razbira :)
[Otgovori na tozi komentar]
Ima i drugi...
Ot: pingu
Na: 12-08-2005@13:33 GMT+2
Otsenka: 1/NeutralenIma i drugi methodi (makar i podobni):
1.http://www.cantrip.org/wave12.html
2.http://www.hpl.hp.com/personal/Hans_Boe...
Inache e dobre!
[Otgovori na tozi komentar]
C/C++ upravlenie na pametta
Ot: 0xff
Na: 30-08-2005@9:51 GMT+2
Otsenka: 1/NeutralenUpravlenieto na pametta v S / S++ naistina mozhe da se prevurne v koshmar, greshkite sa trudni za proslediavane i otkrivane, a edno uslovie za krai na tsikul e absolyutno dostatuchno za da predizvika SIGSERV i Segmentation Fault. Na zaiteresuvanite goreshto preporuchvam nezamenimiia memory debugger: valgrind (http://valgrind.org/).
SHTo se otnasia do opisanata biblioteka RefPtr na glib ne e li neshto ot sorta?
[Otgovori na tozi komentar]
kum: 0xff
Ot: vesso
Na: 30-08-2005@14:07 GMT+2
Otsenka: 1/Neutralen Suglasen sum za valgrind - polezen e, no stignesh li do nego veche si zakusal. TSelta na boost::shared_ptr e da izbegne nuzhdata ot debuger na pametta i moga da kazha che tazi tsel e postignata. Neshto poveche, shared_ptr e predlozhen za standartizirane v S++ (http://www.open-std.org/jtc1/sc22/wg21/...) i sigurno shte go ima v sledvashtata versiia na standartnata biblioteka.
Niamam opit s Glib::RefPtr no edna burza spravka pokazva che toi iziskva zashtitavaniiat klas da ima dva metoda: reference() i unreference(), t.e. zashtitavaniiat obekt sam si izvurshva broeneto na referentsiite. boost::shared_ptr ot druga strana niama takova iziskvane zashtoto samiiat ukazatel sudurzha broiach na referentsiite. Inache krainiiat rezultat e edin i susht - obektut se samorazrushava kogato veche ne e neobhodim.
Redaktiran na: 30-08-2005@14:10
[Otgovori na tozi komentar]