🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #4721

Re: Prawda o C++

#4721
From: A. Hajderek
Date: Wed, 20 Jan 1999 19:22
55 lines
2978 bytes
>1.)
>struct aaa
>{
>    int a;
>    int b;
>};
>
>int main ()
>{
>    aaa a;
>    write (fd, &a, sizeof(aaa));
>}
>
>2.)
>struct aaa
>{
>    int a;
>    int b;
>    int & aa;
>   aaa() : aa(a) {}
>};
>
>int main ()
>{
>    aaa a;
>    write (fd, &a, sizeof(aaa));
>}


Problem z tym przykladem jest taki, ze jest on zalezny od implementacji
i nieprzenosny. C++ nie gwarantuje niczego jesli chodzi o rozmiar obiektu.
Wystarczy, ze dodamy jedna funkcje virtualna do prostej klasy i juz
mamy inny rozmiar - obiekt musi niesc informacje o powiazaniu z tablica
funkcji virtualnych.
Ponadto zaleznie od typu architektury kompilatory
moga stosowac roznego rodzaju wyrownywanie do pelnych adresow, itp.
Nawet kompilatory zwyklego C na intela pozwalaja kontrolowac sposob
pakowania struktur i trzeba bardzo uwazac zanim sie przyjmie jakies
zalozenie.
Jesli chodzi o C++ to jedyna bezpieczna metoda transferu zawartosci
obiektu to pliku jest implementacja odpowiedniej metody (chocby
operatora << dla iostream).

Ogolnie - w znakomitej wiekszosci przypadkow rozmiar obiektu w C++
nie powinien nikogo interesowac - bo nie ma w tej dziedzinie zadnych
gwarancji.

Fakt, ze dodanie skladowej referencyjnej do klasy zmienilo rozmiar obiektu
nie jest niczym nadzwyczajnym - jesli obiekt ma zawierac w sobie informacje
o innym obiekcie (czyli referencje - odnosnik), to musi byc dla tej
informacji
zarezerwowane jakies miejsce - np. 32 bity.

Pozdrawiam,
Andrzej
Technical Details
Message-ID: <916860225.14810.0.nnrp-02.c2d9616c@news.demon.co.uk>
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.icm.edu.pl!uw.edu.pl!newsgate.cistron.nl!het.net!isdnet!news-raspail.gip.net!news-lond.gip.net!news.gsl.net!gip.net!dispose.news.demon.net!demon!news.demon.co.uk!demon!melisa.lscope.co.uk!not-for-mail
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> <36a58e24.0@news.vogel.pl> <916854946.11215.0.nnrp-02.c2d9616c@news.demon.co.uk> <36a62532.0@news.vogel.pl>

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.task.gda.pl!news.icm.edu.pl!uw.edu.pl!newsgate.cistron.nl!het.net!isdnet!news-raspail.gip.net!news-lond.gip.net!news.gsl.net!gip.net!dispose.news.demon.net!demon!news.demon.co.uk!demon!melisa.lscope.co.uk!not-for-mail
From: "A. Hajderek" <andrew@logicscope.net>
Newsgroups: pl.comp.objects
Subject: Re: Prawda o C++
Date: Wed, 20 Jan 1999 19:22:18 -0000
Message-ID: <916860225.14810.0.nnrp-02.c2d9616c@news.demon.co.uk>
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> <36a58e24.0@news.vogel.pl> <916854946.11215.0.nnrp-02.c2d9616c@news.demon.co.uk> <36a62532.0@news.vogel.pl>
NNTP-Posting-Host: melisa.lscope.co.uk
X-NNTP-Posting-Host: melisa.lscope.co.uk:194.217.97.108
X-Trace: news.demon.co.uk 916860225 nnrp-02:14810 NO-IDENT melisa.lscope.co.uk:194.217.97.108
X-Complaints-To: abuse@demon.net
X-Newsreader: Microsoft Outlook Express 4.72.2106.4
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.2106.4
Lines: 58
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit