Heim > Backend-Entwicklung > C++ > Was ist der Unterschied zwischen Cs „typedef' und „using' Schlüsselwörtern für Typaliase?

Was ist der Unterschied zwischen Cs „typedef' und „using' Schlüsselwörtern für Typaliase?

Linda Hamilton
Freigeben: 2024-12-21 04:53:13
Original
618 Leute haben es durchsucht

What's the Difference Between C  's `typedef` and `using` Keywords for Type Aliases?

Was ist der Unterschied zwischen „typedef“ und „using“ in C?

In C 11 kann das Schlüsselwort „using“ sein Wird zum Erstellen von Typaliasen verwendet, die dem herkömmlichen Schlüsselwort „typedef“ ähneln. Während beide Syntaxen das gleiche Ergebnis erzielen, indem sie einem vorhandenen Typ einen neuen Namen zuweisen, gibt es subtile Unterschiede in ihrer Semantik, die berücksichtigt werden müssen.

Ist „using“ gleichbedeutend mit „typedef“?

Gemäß dem C-Standard (7.1.3.2) führt „using“ einen Typedef-Namen mit identischer Semantik ein, als ob er es wäre definiert mit 'typedef'. Das bedeutet, dass „using“ keinen neuen Typ erstellt, sondern stattdessen einen alternativen Namen für einen vorhandenen Typ bereitstellt. Konvertierungen zwischen diesen Namen sind implizit.

Unterschiede in der Semantik

Trotz ihrer ähnlichen Syntax und Semantik unterscheidet sich das Schlüsselwort „using“ von „typedef“ in folgenden Punkten:

  • Schwaches Aliasing: „typedef“ erstellt einen „schwachen“ Alias, was bedeutet, dass der ursprüngliche Typ nicht neu definiert wird. „using“ hingegen kann nicht zum Erstellen schwacher Aliase verwendet werden.
  • Vorlagentyp-Aliase: „using“ kann zum Erstellen von Vorlagentyp-Aliasen verwendet werden, „typedef“ hingegen nicht . Zum Beispiel:
template<typename T>
using MyType = AnotherType<T, MyAllocatorType>;
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Cs „typedef' und „using' Schlüsselwörtern für Typaliase?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage