Article View: pl.comp.lang.c
Article #309703Re: Dziedziczcenie i metody
From: Radosław Korzeniewski
Date: Fri, 08 Jun 2018 06:30
Date: Fri, 08 Jun 2018 06:30
47 lines
3961 bytes
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-mailReferences:
<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