🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Ciemna strona C++

#268157
From: Sebastian Kaliszewski
Date: Thu, 15 Nov 2007 11:20
29 lines
2471 bytes
Tomasz bla Fortuna wrote:
>>W przypadku języka C, faktycznie, nie jesteś w stanie ustrzec się
>>takiego błędu.
> 
> W C takiego błędu by nie było. W C bym nie upcastował nigdy wskaźnika
> na klasę. Bo.. no nie ma klas. Jeśli funkcja dostaje wskaźnik do
> tablicy elementów A typu T i jej wielkość to A[0] to pierwszy
> element, a A[1] to drugi element, a nie dalszy kawałek A[0], który
> okazał się być jednak innego typu niż T.
> 
> A nawet jakbym rzutował w C większe structy na mniejsze to nie jest to
> tak naturalne jak w C++ upcasting. W Idealnych warunkach ten przykład
> nie powinien się skompilować bez zastosowania reinterpret_cast<>.

Tak powinno być, gdyby w C++ nie było tego poważnego błedu projektowego.

Można to było rozwiązać na różne sposoby.

Np, jeśli już koniecznie musimy akurat ten quirk z C przejmować (wywalając 
parę innych, takich jak typ funkcja(), konwersje między różnymi wskaźnikami, 
itd) to można było choć w wprowadzić jakieś sensowne rozróżnienie na POD i 
nie-POD. Naprzykład takie class to jest w zasadzie to samo co
struct { private:. Nic więc nie wnosi. A gdyby struct było zawsze POD, a 
class nigdy POD i dla nie-POD odróżnić twardo * od [] (przy okazji w class 
wywalić domyślny konstruktor kopiujący i przypisanie) byłoby już lepiej.


pzdr
\SK
Technical Details
Message-ID: <fhh949$5nq$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> <20071106002442.aebf0037.sulsa@dontmail.me> <fgqpbs$9cu$1@news.vectranet.pl> <20071107012633.3efe623d@Vorago> <fhg43j$b4s$1@kujawiak.man.lodz.pl> <20071115022727.5a697635@Vorago>

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: Thu, 15 Nov 2007 12:20:08 +0100
Organization: Softax news server
Lines: 29
Message-ID: <fhh949$5nq$1@bozon2.softax.pl>
References: <fghgeo$spf$1@nemesis.news.tpi.pl> <20071106002442.aebf0037.sulsa@dontmail.me> <fgqpbs$9cu$1@news.vectranet.pl> <20071107012633.3efe623d@Vorago> <fhg43j$b4s$1@kujawiak.man.lodz.pl> <20071115022727.5a697635@Vorago>
NNTP-Posting-Host: 83.18.189.42
Mime-Version: 1.0
X-Trace: nemesis.news.tpi.pl 1195125466 18203 83.18.189.42 (15 Nov 2007 11:17:46 GMT)
X-Complaints-To: usenet@tpi.pl
NNTP-Posting-Date: Thu, 15 Nov 2007 11:17:46 +0000 (UTC)
User-Agent: Mozilla Thunderbird 1.0.2 (X11/20050322)
X-Accept-Language: en-us, en
In-Reply-To: <20071115022727.5a697635@Vorago>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit