Dynamic cast: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Bot: sostituzioni standard |
m tag source deprecati, replaced: <source lang= → <syntaxhighlight lang=, </source> → </syntaxhighlight> |
||
(20 versioni intermedie di 16 utenti non mostrate) | |||
Riga 1:
{{F|linguaggi di programmazione|febbraio 2013}}
Il linguaggio di programmazione [[C++]], otre al cast implicito fatto con ''()'', dispone di quattro tipi di cast espliciti: ''[[const_cast]]'', ''dynamic_cast'', ''[[reinterpret_cast]]'' e ''[[static_cast]]''.▼
{{titolo minuscolo}}
▲Il linguaggio di programmazione [[C++]],
Il costrutto '''dynamic_cast''' permette di convertire un puntatore ad un oggetto di una classe base ad uno di classe derivata,
Esempio:
<
class Padre {.....};
class Figlio : public Padre {.....};
Line 17 ⟶ 19:
p = nObj; // ok un puntatore ad una classe derivata può essere assegnato ad uno di classe base
n = p; // qui il compilatore genera errore perché non sa se l'assegnamento è valido (lo si sa solo run-time)
n = dynamic_cast<Nipote*>(p); // qui si chiede di fare il controllo run-time per validare la conversione (valida in questo caso)
if (n)
cout
p = fObj;
n = dynamic_cast<Nipote*>(p); // qui si chiede di fare il controllo run-time per validare la conversione (non valida in questo caso)
if (!n)
cout
}
</syntaxhighlight>
Si tenga presente che affinché il costrutto ''dynamic_cast'' lavori correttamente è necessario che il supporto [[RTTI]] del compilatore sia attivo (spesso, nella produzione del [[firmware]], si sceglie
== Voci correlate ==
[[Categoria:C++]]▼
* [[Conversione di tipo]]
{{C++}}
▲[[en:Dynamic cast]]
{{portale|informatica}}
▲[[Categoria:C++]]
|