Newsgroup: it.comp.lang.c++
Titolo: Perchè i cast non piacciono?

Come mai si sente parlare cosě male dei cast e tutti gli voglono evitare?

 Come mai si sente parlare così male dei cast e tutti gli voglono evitare?
Perchè sono spesso indice di una cattiva impostazione del codice. Il C++ mette a
disposizione diversi strumenti (polimorfismo, templates) per consentire una
programmazione conforme ad un rigoroso type checking (che garantisce maggiore
robustezza e maggiore pulizia), cosicchè i cast dovrebbero risultare necessari
solo in un ristretto numero di casi. Se invece si vedono abbastanza di frequente
in un programma, c'è di che insospettirsi.
Caio
Paolo



Ciao
Paolo

 Come mai si sente parlare così male dei cast e tutti gli voglono evitare?
Perché disattivano una delle cose migliori del C/C++: il controllo sui
tipi a tempo di compilazione.
EMG

 Come mai si sente parlare così male dei cast e tutti gli voglono evitare?
perche' non e' normale utilizzare una varibile una volta come int una
volta come char ed una volta come void... alla fine perdi il vero
significato...
ciaoz
Ho sentito urla di sudore... che schifo...
--
Michel <ZioBudda> Morelli		  
mic...@michel.enter.it
 
http://ziobudda.enter.it
Problemi con Linux ?    mailto:
li...@saturn.media.dsi.unimi.it

 Come mai si sente parlare così male dei cast e tutti gli voglono evitare?
Il cast aggira il controllo dei tipi in fase di compilazione. E'
potenzialmente pericoloso perche' in caso di "abuso" l'unico segnale è
il malfunzionamento del programma.

...


 type check e' quindi e' giustissimo usarli.
1. I cast che nomini esistono solo in C++ e non in C (ora non ricordo
più di quale dei due linguaggi si parlava...).
2. Sono nati solo per cercare di ridurre al minimo i danni causati dai
cast di vecchio stile ma ne viene comunque sconsigliato e scoraggiato
l'utilizzo se non in quei casi nei quali non c'è altra alternativa.
EMG


sconsigliato e scoraggiato DA CHI ?
forse da persone che come te non sanno a cosa servono!!!
ciao achille

 forse da persone che come te non sanno a cosa servono!!!
Scusa, ma forse sarebbe meglio che ti andassi a leggere un po' di libri
sul C++...
EMG

forse da persone che come te non sanno a cosa servono!!!
Probabilmente il riferimento era al cast in generale (sempre da evitare
se possibile) mi sembra chiaro che quando necessario un cast new style
e` preferibile ad uno old style!
Paolo
------------------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
  G: Per concludere, possiamo chiedervi di commentare
     l'attuale panorama informatico?
  I: /* l'attuale panorama informatico */
------------------------------------------------------------------

 forse da persone che come te non sanno a cosa servono!!!
Bjarne Stroustrup ti dice niente? nel caso tu non lo sapessi è l'inventore
del C++
Brian W. Kernighan e Dennis M. Ritchie invece si sono inventati il C (un po'
di tempo prima :-)
...e tutti sono concordi nel dire che il cast (molto spesso, non sempre) è
un trucchetto che viola molti principi fondamentali sia del C che del C++.
Nondimeno è consentito in entrambi i linguaggi, anzi visto che molto spesso
i trucchetti aiutano a snellire un programma o a raggiungere particolari
obiettivi, il C++ "perfeziona" e "regolarizza" il cast con i quattro
costrutti a noi ben noti: static_cast<>, dynamic_cast<>, const_cast<> e
reinterpret_cast<>
di seguito cito Stroustrup:
«In C++ explicit type conversion is unnecessary in most cases when C needs
it. In many programs, explicit type conversion can be completely avoided.»
«C-style cast is far more dangerous than the named comversion operators
because the notation is harder to spot in a large program and the kind of
conversion intended by the programmer is not explicit. That is,  '(T)e'
might be doing a portable conversion between related types, a nonportable
conversion between unrelated types, or removing the 'const' modifier from a
pointer type. Without knowing the exact types of ' T ' and 'e', you cannot
tell.»
«C-style casts should have been deprecated when the new-style casts were
introduced. Programmers should seriously consider banning C-style casts from
their own programs. Where explicit type conversion is necessary,
static_cast, reinterpret_cast, const_cast or a combination of these can do
what a C-style cast can. The new-style casts sould be preferred because they
are more explicit and more visible.»
ok?
TobiX




"scompositori di messaggi" viene largamente proposta anche da luminari quali
Il problema nasce dal fatto che le api win16 e win32 hanno una "interfaccia" C
(se mi passi l'espressione) ma la cosa peggiore e` che spesso i progettisti
hanno cercato tutta una serie di trucchetti per avere l'overloading anche in C.
Personalmente quando posso evito chiamate dirette alle api, meglio ricorrere
se possibile ad un framework, semplifica la vita e soprattutto se scritto bene
nasconde i cast tramite uno strato software.


 Richter Jeffrey.
Già, peccato che la WIN32 non sia esattamente (almeno secondo me) ciò
che si può chiamare un capolavoro di coerenza informatica...
EMG

...

... anche su questo non posso che essere daccordo....


ah ah ah ah
Sai leggete ?


Allora ???
Non fa una grinza!!!!
Sai leggere!!! Non capisco la tua risposta!!!
una cosa è il C una il CPP
lo sai no !
il cpp usa i suoi cast!!!!!