Heim >Backend-Entwicklung >C++ >Kann „using' „typedef' in C 11 für Nicht-Vorlagentypen vollständig ersetzen?

Kann „using' „typedef' in C 11 für Nicht-Vorlagentypen vollständig ersetzen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-23 18:57:13346Durchsuche

Can `using` Completely Replace `typedef` in C  11 for Non-Template Types?

Kann „using“ „typedef“ in C 11 ersetzen?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn