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 intund ich kann inteinem 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 intist 0. Dies entsprichtint *ptr = 0;
NULLdass ein Wert ungleich Null sein könnte. Ich sagte, es könnte eine beliebige ganzzahlige Konstante mit Nullwert sein (einschließlich int()).