| Path: | news2.ip-mobilphone.net ! NNTPLoader.ip-mobilphone.net ! text.usenetserver.com ! out01b.usenetserver.com ! news.usenetserver.com ! in02.usenetserver.com ! news.usenetserver.com ! postnews.google.com ! news4.google.com ! feeder1-2.proxad.net ! proxad.net ! feeder1-1.proxad.net ! club-internet.fr ! feedme-small.clubint.net ! newsfeed00.sul.t-online.de ! t-online.de ! news.nask.pl ! news.nask.org.pl ! newsfeed.tpinternet.pl ! atlantis.news.tpi.pl ! news.tpi.pl ! not-for-mail |
| From: | SasQ <sasq1@go2.pl> |
| Newsgroups: | pl.comp.lang.c |
| Subject: | Prywatne dziedziczenie vs zawieranie w C++ FAQ |
| Date: | Wed, 05 Sep 2007 00:22:18 +0200 |
| Organization: | Der grande totalle welt destrukszyn organizejszyn :P |
| Lines: | 34 |
| Message-ID: | <pan.2007.09.04.22.22.17.938704@go2.pl> |
| NNTP-Posting-Host: | bzl24.neoplus.adsl.tpnet.pl |
| Mime-Version: | 1.0 |
| Content-Type: | text/plain; charset=ISO-8859-2 |
| Content-Transfer-Encoding: | 8bit |
| X-Trace: | nemesis.news.tpi.pl 1188944845 2487 83.30.57.24 (4 Sep 2007 22:27:25 GMT) |
| X-Complaints-To: | usenet@tpi.pl |
| NNTP-Posting-Date: | Tue, 4 Sep 2007 22:27:25 +0000 (UTC) |
| User-Agent: | Pan/0.14.2 (This is not a psychotic episode. It's a cleansing moment of clarity.) |
| X-Received-Date: | Tue, 04 Sep 2007 18:22:16 EDT (text.usenetserver.com) |
| Xref: | news2.ip-mobilphone.net pl.comp.lang.c:215138 |
Siema.
Przeglądając sobie C++ FAQ natknąłem się na taki motyw:
http://www.parashift.com/c++-faq-lite/private-inheritance.html#faq-24.2 (Who's computer is this?)
i oczywiście pierwszą myślą, gdy zobaczyłem to:
class Car : private Engine
było: "WTF??! o_O"
Czy tylko mi się zdaje, czy oni w tym FAQ opowiadają bajki?
Piszą tam, że "private inheritance is a syntactic variant of
composition" ["Dziedziczenie prywatne jest składniową
odmianą zawierania"]. Jak dla mnie nie jest to prawdą, bo
dany zestaw funkcji/danych można odziedziczyć tylko raz,
a w przypadku zawierania można je mieć wielokrotnie
powtórzone w obiekcie. Kolejną różnicą jest fakt, że przy
zawieraniu nie można nadpisać metod wirtualnych, co jest
oczywiście możliwe gdy dziedziczymy.
To, że "z zewnątrz" dziedziczenie prywatne i zawieranie
wydają się wyglądać tak samo, nie oznacza jeszcze, że
to JEST to samo ;P Błędność podanego tam przykładu
narzuca się sama, gdy sobie uświadomić, że implementacja
klasy Car widzi tą zależność dziedziczenia i może z niej
korzystać. A jaki sens ma stwierdzenie, że samochód JEST
szczególnym przypadkiem silnika? :PPP Jest to idiotyzmem
nawet, jeśli reszta świata o tym nie wie ;J
Co o tym myślicie?
Mam rację, czy może coś przeoczyłem?
--
SasQ