Der folgende Code ( von hier übernommen ):
int* ptr = int();
Kompiliert in Visual C ++ und initialisiert den Zeiger mit einem Wert.
Wie ist das möglich? Ich meine, int()
ergibt ein Objekt vom Typ int
und ich kann int
einem Zeiger kein Objekt zuweisen .
Wie ist der obige Code nicht illegal?
int()
ergibt sich der Wert konstruierter Wert von int
(was meiner Meinung nach eine von C ++ 03 spezifizierte Sache ist) und der Standardwert von int
ist 0
. Dies entsprichtint *ptr = 0;
NULL
dass ein Wert ungleich Null sein könnte. Ich sagte, es könnte eine beliebige ganzzahlige Konstante mit Nullwert sein (einschließlich int()
).