Article View: pl.comp.objects
Article #4718Re: Prawda o C++
From: Adam Karpierz
Date: Wed, 20 Jan 1999 08:01
Date: Wed, 20 Jan 1999 08:01
73 lines
3588 bytes
3588 bytes
Sektor van Skijlen wrote:
>In pl.comp.objects Adam Karpierz <karpierz@itl.pl> wrote:
>:>> A jak inaczej je zrealizowac ?
>:>> Referencja to nie alias (przezwisko) ale rzeczywista zmienna przeciez.
>
>Watek za szybko sie rozrosl, a ja ostatnio nie wyrabiam z czasem, totez
>niezdazylem odpowiedziec, ze jest to niestety bzduda. Zmienna to moze i jest,
>ale na poziomie jezyka, a niekoniecznie na poziomie programu.
>I po raz kolejny mowie, ze nie mozna myslec o referencjach kategoriami jezyka
Nie na poziomie programu ? Hmm..
class aaa
{
int a;
int b;
};
class bbb
{
int a;
int b;
int & c;
};
#include <stdio.h>
int main ()
{
printf("%d %d", sizeof(aaa), sizeof(bbb));
}
Jakie beda wyniki ?.
>Powiem wiecej: zmienne referencyjne istnieja tylko w czasie kompilacji
>programu.
No wiec dlaczego sizeof(aaa) != sizeof(bbb) ?
I co najgorsze czasami tak a czasami nie.
Abstrakcyjne myslenie ze zmienne referencyjne to tylko alias,
istnieja tylko w czasie kompilacji wiec bezpiecznie mozna z nimi
szalec jak widac moze prowadzic do pieknych bledow.
Po prostu referencje w C++ sa skopane bo zachowuja sie
dwoiscie. Raz tylko jako aliasy (brak mozliwosci przestawienia referencji,
referencje do stalych obiektow).
drugi raz jako normalne "zmienne" posiadajace swoje "cialo" (j/w).
Raz jako normalny typ (rzutowania, parametry funkcji) , a raz jako
cos co typem nie jest (nie mozna utworzyc tablicy referencji).
Dlatego jesli referencja _moze_ miec sowje "cialo" wole ja
_zawsze_ traktowac jakby to cialo miala i tym sposobem
unikac chocby czesci bledow a nie za kazdym razem rozstrzasac
czy w danej sytuacji/kompilatorze itp zachowa sie jako alias czy jako
cos materialnego.
Zreszta sami rozwomcy pieknie udowadniaja wszelkie minusy
i niedorobki referencji w C++ walczac zaciekle z moim twierdzeniem
ze zmienna to normalny typ.
Tak, bo jest to normalny typ jesli jest to w miare normalna referencja
jak w Javie, Simuli, Pythonie (no tutaj to jeszcze inaczej to wyglada)
a nie cos takiego jak w C++ ktore tylko nasladuje referencje i
wlasciewie nigdy nie wiadomo jak to to traktowac.
Kazda skrajnosc (alias, "normalna" zmienna) prowadzi do bledow.
PS: dla informacji ew. oponentow. Wiem wiem, ostatni standard probuje
cos z tym fantem zrobic, ale standard swoje a zycie (kompilatory)
swoje.
Pozdrawiam
--
Adam Karpierz
Poszukuje stalej pracy, moje dane:
http://www.adares.alpha.pl/cv.htm
Technical Details
Message-ID:
<36a58e24.0@news.vogel.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.task.gda.pl!news.memax.krakow.pl!dumb.iinf.polsl.gliwice.pl!news.vogel.pl!194.204.186.211References:
<77o3bl$j0q$1@polonez.man.lodz.pl> <369FDDCE.7B94748A@interdata.com.pl> <77q41i$j7f$1@polonez.man.lodz.pl> <wU3o2.25549$U1.4744058@news.tpnet.pl> <77qi2q$42a$1@polonez.man.lodz.pl> <77qk38$ken$1@zeus.polsl.gliwice.pl> <77vn97$j3l$1@polonez.man.lodz.pl> <77vsod$l0u$1@zeus.polsl.gliwice.pl> <36A3823B.1950@bear.com> <78073r$t5p$1@zeus.polsl.gliwice.pl> <781vtm$9l8$3@polonez.man.lodz.pl>Show Full Headers
Complete Article Headers
From: "Adam Karpierz" <karpierz@itl.pl> Newsgroups: pl.comp.lang.c,pl.comp.objects References: <77o3bl$j0q$1@polonez.man.lodz.pl> <369FDDCE.7B94748A@interdata.com.pl> <77q41i$j7f$1@polonez.man.lodz.pl> <wU3o2.25549$U1.4744058@news.tpnet.pl> <77qi2q$42a$1@polonez.man.lodz.pl> <77qk38$ken$1@zeus.polsl.gliwice.pl> <77vn97$j3l$1@polonez.man.lodz.pl> <77vsod$l0u$1@zeus.polsl.gliwice.pl> <36A3823B.1950@bear.com> <78073r$t5p$1@zeus.polsl.gliwice.pl> <781vtm$9l8$3@polonez.man.lodz.pl> Subject: Re: Prawda o C++ Date: Wed, 20 Jan 1999 09:01:51 +0100 Lines: 77 X-Newsreader: Microsoft Outlook Express 4.72.3110.1 X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3 NNTP-Posting-Host: 194.204.186.211 Message-ID: <36a58e24.0@news.vogel.pl> X-Trace: 20 Jan 1999 09:04:52 +0100, 194.204.186.211 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.task.gda.pl!news.memax.krakow.pl!dumb.iinf.polsl.gliwice.pl!news.vogel.pl!194.204.186.211 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit