Article View: pl.comp.objects
Article #15696Re: pl.comp.objects FAQ (Frequently Asked Questions and more)
From: rwt
Date: Thu, 22 Feb 2007 22:29
Date: Thu, 22 Feb 2007 22:29
74 lines
3630 bytes
3630 bytes
Odpowiedź do listu Wielce Szanownej Pani / Szanownego Pana ‹SasQ›. Wysłannik wyższej inteligencji tako rzecze :): >> T.2.9 Co to jest konstruktor kopiujacy? >> Konstruktor kopiujacy jest bardzo podobny do operatora przypisania, >> tyle ze o ile operator przypisania uzywany jest dla obiektow juz >> istniejacych, to konstruktor kopiujacy gdy tworzymy nowy obiekt i >> jednoczesnie nadajemy mu jakas wartosc. Przyklad (bo bez przykladu >> raczej malo kto zrozumie :-) ): > Czemu? Po prostu chodzi o zwyczajną inicjalizację nowo tworzonego > biektu wartością innego obiektu tego samego typu ;) >> A d; // A tutaj operator przypisania z tym samym argumentem > Raczej linijkę niżej ;) o tu: >> d=b; >> Konstruktor kopiujacy jest tylko i wylacznie wtedy gdy >> przypisanie nastepuje rownoczesnie z utworzeniem. > Ale wtedy to nie jest przypisanie, tylko inicjalizacja ;P > Przypisuje się do obiektów już skonstruowanych. > Jak nie łapiesz różnicy, to spróbuj z obiektami const: > można je tylko inicjalizować, ale nie można do nich już > później przypisywać. >> Dlaczego to wyroznienie? Pozwala to zaoszczedzic operacji, >> bo oczywiscie moglo by byc i tak ze kazda instrukcja typu >> "A b=c;" bylaby rozbijana na dwie: "A b; b=c;". > Tu akurat nie to jest najważniejsze ;) > Ponownie polecam popróbować z const ;) > Jeśli obiekt jest const, nie możesz do niego już nic przypisać > po utworzeniu. Jeśli chcesz ustawić wartość obiektu stałego > "na wzór" innego obiektu, to jedyny moment, gdzie jest to możliwe, > jest przy konstruowaniu. Później jest już "po ptokach" :P > I tu się właśnie przydaje konstruktor kopiujący, zwany też > "inicjalizatorem kopiującym" ;J >> Ale wtedy niepotrzebnie obiekt "b" bylby dwa razy inicjowany > Inicjuje się czynności. Obiekty się inicjalizuje. > I nie słuchaj słownika Kopalińskiego, jego autorzy nie wiedzą > co to jest programowanie ;) >> Najbardziej znane przyklady sprytnych wskaznikow to string >> (opakowujacy wskaznik do char) > ?? :P > Tak rozumując, to każda klasa, która zawierałaby w swojej > implementacji jakieś wskaźniki i je obsługiwała, musiałaby > być "sprytnym wskaźnikiem" :P Ja bym raczej zawęził ten termin > do obiektów "symulujących" zwykłe wskaźniki w widoczny sposób. Można by zauważyć, że dla zmiennych typu klasa nie zachodzą przypisania. Tak naprawdę dla nich są tylko inicjalizacje. Natomiast przypisania pozostały dla zmiennych prymitywnych oraz referencji, wskaźników. Wasz -- / qo |) :@=N%_g=v=a=g_eD_e=c()=d=8! =%!Gn@8're. w8in/ad \ _x/ , ;h-%-a'hA'H4,X0'Xo~xo~xO,R`-%EXp01ITed: *-7/+eh / | ng `-%__%--'__%--'__%--~__%--^%B`/$qV3r[o; &GooMee L o_O http://tech.groups.yahoo.com/group/opRWTng O_o L"EnOF"
Technical Details
Message-ID:
<erl5gf$bi2$1@inews.gazeta.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mailReferences:
<pl-comp-objects-faq-1-1166202604@ict.pwr.wroc.pl> <pan.2007.02.22.19.13.55.43827@go2.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail From: rwt <ratwithouttail@gazeta.pl> Newsgroups: pl.comp.objects Subject: Re: pl.comp.objects FAQ (Frequently Asked Questions and more) Date: Thu, 22 Feb 2007 23:29:35 +0100 Organization: opRWTng Lines: 75 Message-ID: <erl5gf$bi2$1@inews.gazeta.pl> References: <pl-comp-objects-faq-1-1166202604@ict.pwr.wroc.pl> <pan.2007.02.22.19.13.55.43827@go2.pl> NNTP-Posting-Host: os-solna.bochnia.pl Mime-Version: 1.0 X-Trace: inews.gazeta.pl 1172183375 11842 82.160.2.94 (22 Feb 2007 22:29:35 GMT) X-Complaints-To: usenet@agora.pl NNTP-Posting-Date: Thu, 22 Feb 2007 22:29:35 +0000 (UTC) X-User: ratwithouttail Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit