🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #309703

Re: Dziedziczcenie i metody

#309703
From: Radosław Korzeniewski
Date: Fri, 08 Jun 2018 06:30
47 lines
3961 bytes
W dniu czwartek, 7 czerwca 2018 22:32:17 UTC+2 użytkownik Marcin napisał:
> W dniu 07.06.18r. o 18:52, Piotr Gałka pisze:
> > W dniu 2018-06-07 o 15:42, r.... pisze:
> >> W dniu czwartek, 7 czerwca 2018 15:35:11 UTC+2 użytkownik Piotr Gałka 
> >> napisał:
> >>> Dla mnie dziwne.
> >>> Skoro B nie ma send() to powinna zawołać się send() z A (jeśli 
> >>> publiczna).
> >>> Ta powinna zawołać send(int), a że ta jest wirtualna to powinna zawołać
> >>> się ta z B.
> >>
> >> Dokładnie taki sam tok myślenia przeprowadziłem ale niestety generuje 
> >> to błąd podczas kompilacji. Zakładam że to ja jestem w błędzie i 
> >> dlatego poszukuję pomocy.
> >>
> > 
> > Sprawdziłem pod C++ Builder 5 (który używam) i jest tak samo jak u Ciebie.
> > Wychodzi na to, że zapewne użycie tej samej nazwy w klasie pochodnej 
> > zasłania wszystkie funkcje o takiej nazwie z kasy bazowej.
> > Chodzi mi po głowie, że mogłem kiedyś coś takiego wiedzieć, ale wiedza 
> > nie używana ulatuje (o dziedziczeniu uczyłem się z książki od C do C++, 
> > którą kupiłem w 93r.).
> > P.G.
> 
> Tak wlasnie jest w C++ (odwrotnie niz w Javie, tam by to dzialalo). I 
> nawet jest na to uzasadnienie. Zalozmy, ze mamy takie cos:
> 
> 	struct A { void f(long); };
> 	struct B : A { void f(long); };
> 
> 	B b;
> 	b.f(0);
> 
> Oczywiscie zawola sie B::f. Teraz przypuscmy, ze nagle ktos postanowil 
> do klasy A dolozyc funkcje void f(int);. Gdyby B::f nie przykrywalo 
> wszystkich wersji A::f to w tym momencie zawolaloby sie A::f(int) i 
> zmienia sie dzialanie naszego programu (0 jest int-em, wczesniej bylo 
> niejawnie rzutowane na longa). Jezeli teraz spojrzymy na A jak na 
> interfejs a na B jak na implementacje, to zmiana czegos w interfejsie 
> moze rozwalic caly program. Co wiecej tak samo by bylo gdyby w A 
> wczesniej w ogole nie bylo funkcji f. Dolozenie f(int) by wszystko 
> rozwalilo. Jeszcze dolozmy do tego, ze tworca A raczej nie musi wiedziec 
> jak jego interfejs jest uzywany, wiec moze dokladac co chce. Az dziw, ze 
> programy w Javie dzialaja po upgradzie API :)
Dziękuję za tak obszerne wyjaśnienia.

Radek
Technical Details
Message-ID: <664863d4-4450-47b2-abe6-1c7a1200a066@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin2!goblin.stu.neva.ru!newsfeed.xs4all.nl!newsfeed7.news.xs4all.nl!85.12.16.68.MISMATCH!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer01.am4!peer.am4.highwinds-media.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!h2-v6no3456691qtp.0!news-out.google.com!p41-v6ni739qtp.1!nntp.google.com!h2-v6no3456684qtp.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <342f89bb-b3d4-4c87-9dd7-97a572d63ab0@googlegroups.com> <pfbb7c$9cm$1@node1.news.atman.pl> <pfbcac$dra$1$PiotrGalka@news.chmurka.net> <f423abc5-5a4e-49da-b82d-6c9485dcacc5@googlegroups.com> <pfbntm$i5n$1$PiotrGalka@news.chmurka.net> <5b19964f$0$675$65785112@news.neostrada.pl>

Show Full Headers
Complete Article Headers
X-Received: by 2002:a0c:b0b6:: with SMTP id o51-v6mr2611167qvc.9.1528439459469;        Thu, 07 Jun 2018 23:30:59 -0700 (PDT)
X-Received: by 2002:a0d:f606:: with SMTP id g6-v6mr192596ywf.3.1528439459154; Thu, 07 Jun 2018 23:30:59 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin2!goblin.stu.neva.ru!newsfeed.xs4all.nl!newsfeed7.news.xs4all.nl!85.12.16.68.MISMATCH!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer01.am4!peer.am4.highwinds-media.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!h2-v6no3456691qtp.0!news-out.google.com!p41-v6ni739qtp.1!nntp.google.com!h2-v6no3456684qtp.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.c
Date: Thu, 7 Jun 2018 23:30:58 -0700 (PDT)
In-Reply-To: <5b19964f$0$675$65785112@news.neostrada.pl>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=93.174.26.203; posting-account=XENjyAkAAACMiwFCilkQ6IR7gD6eX5mJ
NNTP-Posting-Host: 93.174.26.203
References: <342f89bb-b3d4-4c87-9dd7-97a572d63ab0@googlegroups.com> <pfbb7c$9cm$1@node1.news.atman.pl> <pfbcac$dra$1$PiotrGalka@news.chmurka.net> <f423abc5-5a4e-49da-b82d-6c9485dcacc5@googlegroups.com> <pfbntm$i5n$1$PiotrGalka@news.chmurka.net> <5b19964f$0$675$65785112@news.neostrada.pl>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <664863d4-4450-47b2-abe6-1c7a1200a066@googlegroups.com>
Subject: Re: Dziedziczcenie i metody
From: Radosław Korzeniewski <radoslaw@korzeniewski.net>
Injection-Date: Fri, 08 Jun 2018 06:30:59 +0000
X-Received-Bytes: 4020
X-Received-Body-CRC: 2121685369
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit