🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #4616

Re: Referencje (Re: Prawda o C++)

#4616
From: Marcin 'Qrczak' Kowalczyk
Date: Thu, 21 Jan 1999 08:09
40 lines
3700 bytes
On Mon, 18 Jan 1999, Andrzej Lewandowski wrote:

> W dalszym ciagu nie rozumiem: po co wskazniki i referencje?

Jeśli chcemy referencje na referencje / wskaźniki na wskaźniki (a ja chcę
- żeby implementacja listy mogła dostać argument "gdzie podłączyć następny
element" - inaczej robi się sztuczne ograniczenie), to nie wystarczą
osobne operatory na podstawienia i porównania adresów i wartości, bo
tych poziomów robi się potencjalnie nieskończenie wiele. Naturalnym
rozwiązaniem są wtedy referencje i operator "brania adresu", który
można stosować wielokrotnie - albo w drugą stronę, wskaźniki i operator
"wyłuskania". I jeden rodzaj operatora przypisania oraz jeden rodzaj
operatora porównania.

Co teraz zwraca operator brania adresu? Otóż coś, co zachowuje się jak
wskaźnik! Więc nawet jeśli wskaźniki nie będą w praktyce używane jako pola
rekordu, same pojawią się jako wartości cząstkowych wyrażeń.

Na szczęście, jak pokazuję, wskaźniki dają się zaimplementować w samym
języku, mając referencje. Nawet gdyby typ wskaźnikowy nie był zdefiniowany
w standrdowych bibliotekach, każdy mógłby go sobie zaimplementować.

Nie jestem tylko pewien, czy w moim modelu da się w ogóle zdefiniować
operator brania adresu, tak żeby odpowiednio działał dla wielokrotnych
referencji. Poprzednio mówiłem, że chyba się nie da; teraz mi wychodzi,
że chyba jednak się da, ale zależy to od tego, jaki ten model będzie -
jeszcze nie wszystko mam wymyślone. Problem jest w zdefiniowaniu zasad
rozwiązywania niejednoznaczności w dopasowywaniu typów do przeciążonych
operacji. Często w takich sytuacjach będzie po prostu błąd kompilacji,
ale niektóre rzeczy, m.in. branie adresu wielokrotnych referencji,
wymagają zasad pozwalających jakoś wyrazić, że mimo niejednoznaczności
chcemy użyć którejś wersji. Intuicyjnie faworyzowane będą wersje nie
wymagające konwersji typów oraz wersje zdefiniowane dla "bardziej
szczegółowych" typów... Chyba że zupełnie zmienię model...

-- 
 __("<    Marcin Kowalczyk * qrczak@knm.org.pl http://kki.net.pl/qrczak/
 \__/       GCS/M d- s+:-- a21 C+++>+++$ UL++>++++$ P+++ L++>++++$ E->++
  ^^                W++ N+++ o? K? w(---) O? M- V? PS-- PE++ Y? PGP->+ t
QRCZAK                  5? X- R tv-- b+>++ DI D- G+ e>++++ h! r--%>++ y-
Technical Details
Message-ID: <Pine.LNX.4.05.9901210833580.9316-100000@qrnik.knm.org.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.nask.pl!orion.cst.tpsa.pl!news.tpnet.pl!not-for-mail
References: <77qi2q$42a$1@polonez.man.lodz.pl> <77qk38$ken$1@zeus.polsl.gliwice.pl> <Pine.LNX.4.05.9901161958290.396-100000@qrnik.knm.org.pl> <36a27542.0@news3.ibm.net> <Pine.LNX.4.05.9901180659020.6379-100000@qrnik.knm.org.pl> <77upi3$saj$1@zeus.polsl.gliwice.pl> <Pine.LNX.4.05.9901181049150.351-100000@qrnik.knm.org.pl> <36A34000.764E7B8@interdata.com.pl> <77vjok$7aj$1@h1.uw.edu.pl> <36A361A1.69764717@interdata.com.pl> <Pine.LNX.4.05.9901182130180.542-100000@qrnik.knm.org.pl> <36a3cad2.0@news3.ibm.net>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.nask.pl!orion.cst.tpsa.pl!news.tpnet.pl!not-for-mail
From: Marcin 'Qrczak' Kowalczyk <qrczak@knm.org.pl>
Newsgroups: pl.comp.programming,pl.comp.objects
Subject: Re: Referencje (Re: Prawda o C++)
Organization: Klub Nieszkodliwych Manjaków
Lines: 41
Message-ID: <Pine.LNX.4.05.9901210833580.9316-100000@qrnik.knm.org.pl>
References: <77qi2q$42a$1@polonez.man.lodz.pl> <77qk38$ken$1@zeus.polsl.gliwice.pl> <Pine.LNX.4.05.9901161958290.396-100000@qrnik.knm.org.pl> <36a27542.0@news3.ibm.net> <Pine.LNX.4.05.9901180659020.6379-100000@qrnik.knm.org.pl> <77upi3$saj$1@zeus.polsl.gliwice.pl> <Pine.LNX.4.05.9901181049150.351-100000@qrnik.knm.org.pl> <36A34000.764E7B8@interdata.com.pl> <77vjok$7aj$1@h1.uw.edu.pl> <36A361A1.69764717@interdata.com.pl> <Pine.LNX.4.05.9901182130180.542-100000@qrnik.knm.org.pl> <36a3cad2.0@news3.ibm.net>
Mime-Version: 1.0
In-Reply-To: <36a3cad2.0@news3.ibm.net>
Date: Thu, 21 Jan 1999 08:09:05 GMT
NNTP-Posting-Host: 195.205.246.101
X-Complaints-To: abuse@tpsa.pl
X-Trace: news.tpnet.pl 916906145 195.205.246.101 (Thu, 21 Jan 1999 09:09:05 MET DST)
NNTP-Posting-Date: Thu, 21 Jan 1999 09:09:05 MET DST
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit