🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #15696

Re: pl.comp.objects FAQ (Frequently Asked Questions and more)

#15696
From: rwt
Date: Thu, 22 Feb 2007 22:29
74 lines
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-mail
References: <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