in C++ das Wörtchen "auto" was tut es?

  • auto sorgt automatisch dafür, dass spätestens zur Compile time der richtige Typ eingesetzt wird.

    In diesem Fall sorgt ja die Cast<AWaffe> funktion dafür, dass ein AWaffe* pointer rauskommt. Aus


    auto TraceHitWeapon = Cast<AWaffe>(TraceHitItem)


    wird also automatisch


    AWaffe* TraceHitWeapon = Cast<AWaffe>(TraceHitItem)


    Der Vorteil ist, sagen wir mal irgendwann später merkt du du musst doch eher zu AAndereWaffe casten.

    So musst du nur den Teil zwischen den <> ändern. Das verringert den Wartungsaufwand, da eine einzige Änderung sich auch automatisch auf die "auto" Variablen auswirkt, anstatt dass du alle lokalen Variablen manuell Nachziehen musst.


    Der Nachteil ist dass der Typ einer auto Variable nur implizit bekannt ist und nicht explizit. Du weißt also nur aus dem Kontext welcher Typ sich hinter TraceHitWeapon verbirgt. In diesem Fall ist es einfach zu verstehen, also ein recht guter Einsatz von auto, bei komplexerem Code könnte es jedoch die Verständlichkeit deines Codes verringern.

    • Hilfreich

    Der Nachteil ist dass der Typ einer auto Variable nur implizit bekannt ist und nicht explizit. Du weißt also nur aus dem Kontext welcher Typ sich hinter TraceHitWeapon verbirgt. In diesem Fall ist es einfach zu verstehen, also ein recht guter Einsatz von auto, bei komplexerem Code könnte es jedoch die Verständlichkeit deines Codes verringern.

    Ist der Typ rechts der Zuweisung klar ersichtlich, kann man auto nehmen, wie z.B. beim cast. Ist der Typ nicht klar ersichtsicht z.B. wenn man eine Methode/Funktion aufruft, wo man den Rückgabetyp nicht sehen kann sollte man auf auto verzichten.