🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Ciemna strona C++

#267716
From: Sebastian Kaliszewski
Date: Mon, 12 Nov 2007 16:44
57 lines
3346 bytes
Jedrzej Dudkiewicz wrote:
>> Przykazywany jest wskaźnik na obiekt klasy pochodnej do funkcji 
>> oczekującej wskaźnika na obiekt klasy bazowej -- to jest *standardowe* 
>> użycie polimorfizmu. To, że funkcja oczekuje przekazania tablicy, 
>> tylko przygłupi, kulawy język nie miesza tablice ze wskaźnikami to 
>> jest to co jest.
> 
> Wydaje mi się, że o ile przykład pokazuje prawdziwy problem, to sam jest 
> idiotyczny, tzn. strasznie wydumany. W C++, nawet gdyby tablice były 
> obsługiwane prawidłowo, tj. nie byłoby rzutowania (niejawnego) wskaźnika 
> na tablicę, to ten przykład chyba byłby ciągle marny:
> 
> class A {};
> class B : public A {
> public:
>     void do_me() { };
> };
> 
> B tablica[3];
> 
> void fun(A tablica[])
> {
>     tablica[0].do_me(); // <- co z tym?
> }

To się nie skompiluje z dwu powodów:
1. A nie ma metody do_me(), ale to jest, jak rozumiem, przeoczenie
2. Choć A jest nadtypem B, to w poprawionym C++ tablica A nie jest nadtypem 
tablicy B. Podobnei jak i dziś A** nie jest żadnym nadtypem **B.


> Znaczy - trzebaby niejawnie jakoś konwertować to na wskaźniki... No nie 
> wiem, jakaś porażka. Czyli jeszcze raz - o ile przedstawiony problem 
> jest prawdziwy, to przykład jest całkiem z kosmosu - stąd łatwo się go 
> czepiać.

W dobrym języku przykłąd byłby nierealizowalny bez reinterpet_cast. Dziś 
jest to po prostu dziura w systemie typów.


>> To jest karygodny błąd języka. Tłumaczenie wielbicieli C++, żeby użyć 
>> ciężkiego wektora czy niewiele lżejszego, ale w ogóle nie należącego 
>> do języka boost::array jest poprostu żałosne.
> 
> A co jest ciężkiego w vectorze? To nie zaczepka, tylko ciekawość, żeby 
> nie było.

1. Alokacja sterty
2. Powiększanie.
3. Brak kurczenia.

Np. zastąpienie wektora dedykowaną klasą (ciągle z alokacją sterty, ale z 
lepszym powiększaniem i kurczeniem, zoptymalizowanej do trzymania typów POD) 
dało mi w Śmieciuchu++ zysk rzędu 30%.

pzdr
\SK
Technical Details
Message-ID: <fh9v10$mss$1@bozon2.softax.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!opal.futuro.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!bozon.softax.com.pl!not-for-mail
References: <fghgeo$spf$1@nemesis.news.tpi.pl> <fghsb4$kpq$1@news.dialog.net.pl> <fgo4c7$mtu$1@news.vectranet.pl> <20071106073039.433f4934@Vorago> <fgqn9m$74j$2@news.vectranet.pl> <618565031.20071107113041@pkierski.net> <fgt6sh$jov$1@news.vectranet.pl> <fgtb6j$nur$1@news.vectranet.pl> <fgv6ba$k14$1@bozon2.softax.pl> <fgvkne$u3b$1@news.vectranet.pl> <fh1tjd$dtt$1@bozon2.softax.pl> <fh206f$2d6$1@news.supermedia.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!opal.futuro.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!bozon.softax.com.pl!not-for-mail
From: Sebastian Kaliszewski <s@get.it.off.to.reply.informa.pl>
Newsgroups: pl.comp.lang.c
Subject: Re: Ciemna strona C++
Date: Mon, 12 Nov 2007 17:44:39 +0100
Organization: Softax news server
Lines: 57
Message-ID: <fh9v10$mss$1@bozon2.softax.pl>
References: <fghgeo$spf$1@nemesis.news.tpi.pl> <fghsb4$kpq$1@news.dialog.net.pl> <fgo4c7$mtu$1@news.vectranet.pl> <20071106073039.433f4934@Vorago> <fgqn9m$74j$2@news.vectranet.pl> <618565031.20071107113041@pkierski.net> <fgt6sh$jov$1@news.vectranet.pl> <fgtb6j$nur$1@news.vectranet.pl> <fgv6ba$k14$1@bozon2.softax.pl> <fgvkne$u3b$1@news.vectranet.pl> <fh1tjd$dtt$1@bozon2.softax.pl> <fh206f$2d6$1@news.supermedia.pl>
NNTP-Posting-Host: 83.18.189.42
Mime-Version: 1.0
X-Trace: atlantis.news.tpi.pl 1194885424 1426 83.18.189.42 (12 Nov 2007 16:37:04 GMT)
X-Complaints-To: usenet@tpi.pl
NNTP-Posting-Date: Mon, 12 Nov 2007 16:37:04 +0000 (UTC)
User-Agent: Mozilla Thunderbird 1.0.2 (X11/20050322)
X-Accept-Language: en-us, en
In-Reply-To: <fh206f$2d6$1@news.supermedia.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit