c++: dynamic_cast vs reinterpret_cast
John Tsiombikas
nuclear at member.fsf.org
Mon Sep 10 13:48:09 EEST 2012
On Sun, Sep 09, 2012 at 08:07:52PM +0300, Theodore Lytras wrote:
> Μια ερωτησούλα για όποιον ξέρει καλή C++:
>
> Υπάρχει κάποιο μειονέκτημα του dynamic_cast έναντι του reinterpret_cast όταν
> μπορούν να χρησιμοποιηθούν και τα δύο? (Δηλαδή είναι έγκυρο το cast).
Nai... to dynamic_cast den einai cast, kanei extra malakies gia na
elenksei ti type exei ayto pou kaneis cast klp. To reinterpret_cast den
exei logo yparksis, just (cast) ...
> Υποτίθεται πως το dynamic_cast κάνει ένα run-time checking και επιστρέφει null
> αν το επιχειρούμενο cast δεν είναι σωστό. Φαντάζομαι το overhead από αυτό το
> run-time checking είναι αμελητέο, τουλάχιστον όταν μιλάμε για 2-3 casts.
Ameliteo nai, alla gia poio logo na to xrisimopoiiseis an den yparxei
logos kai ksereis idi typo exei ayto pou kaneis cast? Den sou prosferei
tipota.
> Αυτό που με ανησυχεί όμως είναι οτι διάβασα πως απαιτείται o compiler να έχει
> το RTTI ενεργοποιημένο για να δουλέψει το dynamic_cast. Αυτό που δεν έχω
> καταλάβει είναι: (1) υπάρχει κάτι κακό στο να είναι το RTTI ενεργοποιημένο?
Tipota aksiosimioto. Apla ligo extra space overhead gia kathe antikeimeno.
> Για να γίνω πιο συγκεκριμένος, έχω τις abstract base classes A και B, και μια
> σειρά concrete κλάσεων Χ1 έως Χ5. Οι Χ1, Χ2 και Χ3 κληρονομούν τόσο το A όσο
> και το B, ενώ οι Χ4 και X5 μόνο το Β. Ούτε η Α ούτε και η Β κληρονομούνται από
> άλλες κλάσεις.
>
> Αυτό που θέλω είναι να μετατρέψω δείκτες Α* σε δείκτες Β*. Φαντάζομαι αυτό
> μπορεί να γίνει τόσο με dynamic_cast όσο και με reinterpret_cast. Με ποιό από
> τα δύο λοιπόν θα πρέπει να το κάνω, και γιατί?
B *bptr = (B*)aptr;
Seriously... ksexna ta whatever_casts<kourasi>(foo)... den yparxei logos
na kaneis ton kodika sou toso asximo.
> Υ.Γ: Μη με βρίσετε που χρησιμοποιώ πολλαπλή κληρονομικότητα. Αυτή είναι που
> ταιριάζει με τη λογική των αντικειμένων μου. Το έχω σκεφτεί ξανά και ξανά.
Den einai toso aparaitito na teriazei 1-1 i eikona ton antikeimenon sou
sto myalo sou me ton kodika. Einai protimotero na aplopoiiseis ton
kodika synithos.
--
John Tsiombikas
http://nuclear.mutantstargoat.com/
More information about the Linux-greek-users
mailing list