In C 11 kann „using“ jetzt Typaliase ähnlich wie „typedefs“ definieren:
typedef int MyInt; // Equivalent to: using MyInt = int;
Während „Verwenden“ ursprünglich zur Unterstützung von Vorlagen eingeführt wurde typedefs:
template< class T > using MyType = AnotherType< T, MyAllocatorType >;
Dies wirft die Frage auf, ob es subtile Unterschiede zwischen „typedef“ und „using“ beim Umgang mit Nicht-Vorlagentypen gibt.
Aliasing-Verhalten und Auswirkungen
Sowohl „typedef“ als auch „using“ erstellen einen Alias oder neuen Namen für eine vorhandenen Typ, anstatt einen neuen Typ zu definieren. Dies bedeutet, dass Konvertierungen zwischen dem Alias und dem ursprünglichen Typ implizit sind.
Daher gibt es hinsichtlich ihres Aliasing-Verhaltens keinen Unterschied zwischen „typedef“ und „using“. Beide Konstrukte erzeugen schwache Aliase, die auf denselben zugrunde liegenden Typ verweisen.
Das obige ist der detaillierte Inhalt vonKann „using' „typedef' in C 11 für Nicht-Vorlagentypen vollständig ersetzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!