Diskussion:C++-Programmierung: Typumwandlung
Letzter Kommentar: vor 17 Jahren von RokerHRO in Abschnitt Kritikpunkte
Kritikpunkte
BearbeitenIn diesem Kapitel gibts noch viel zu tun, am meisten fallen mir im Moment aber folgende Sachen auf:
- Der Typ einer Variablen oder eines Ausdrucks kann nicht geändert werden. Ein Cast-Operator erzeugt ein (temporäres) Objekt mit dem angegebenen neuen Typ und einem Wert, der sich aus dem "umzuwandelnden" Ausdruck ergibt. Dieses temporäre Objekt ist in der Regel ein rvalue z.B. geht folgendes nicht:
int i; (double)i = 2.0;
- Wann können implizite Casts verwendet werden, wann muss man sie explizit ausschreiben?
- Was sind die Risiken bei impliziten Casts? Wie kann man diese zumindest teilweise abmildern (z.B. via "explizit" bei Konstruktoren selbstdefinierter Klassen)
- Warum sind Casts bei Zeigertypen gefährlich? (Alignment- und Aliasingprobleme)
- Warum ist
reinterpret_cast
gefährlich? Was machtreinterpret_cast
bei nicht-Zeigern? - Wo sind die "function style casts" geblieben? (
double d; ... ; d = double(3+j)/2;
)