Avatar ·

Was ist der Unterschied zwischen typedef und using in C++? Was soll man wählen?

Hallo zusammen! Ich lerne C++ und bin auf zwei Arten gestoßen, um Aliase für Typen zu erstellen: das gute alte `typedef` und das neue `using` aus C++11. Sie scheinen dasselbe zu tun, aber ich habe gehört, dass `using` bevorzugt wird. Könnt ihr erklären, worin der grundlegende Unterschied besteht? Hier ist ein einfaches Beispiel mit `typedef`: ```cpp typedef unsigned long ulong; typedef int (*func_ptr)(double, char); typedef std::vector int_vector; ``` Und dasselbe mit `using`: ```cpp using ulong = unsigned long; using func_ptr = int(*)(double, char); using int_vector = std::vector; ``` Vom Syntax her erscheint mir `typedef` verwirrender, besonders bei Funktionszeigern. Aber gibt es funktionale Unterschiede? Zum Beispiel habe ich gehört, dass `using` mit Templates funktioniert, `typedef` aber nicht. Könnt ihr Beispiele geben, wann `using` überlegen ist, und ob man `typedef` überhaupt noch in neuem Code verwenden sollte? Danke im Voraus! <<>>

Hauptunterschied: Template-Aliase

Der wichtigste und grundlegendste