Hlavní navigace

Názor ke zprávičce Standard C++14 byl jednomyslně schválen od panda - Co vím, tak auto je navrženo a zamýšleno...

  • Aktualita je stará, nové názory již nelze přidávat.
  • 20. 8. 2014 12:31

    panda (neregistrovaný)

    Co vím, tak auto je navrženo a zamýšleno stejně, jako var v C#, tj. pouze syntaktický cukr, aby se předešlo zápisům typu

    MyClass* inst = new MyClass();

    Oproti tomu

    auto inst = new MyClass();

    je kratší, jednodušší a každý pochopí, jakého typu je proměnná inst. Zvlášť význam to pak dostává u konstrukcí typu

    std::vector<int>::const_iterator itr = vect.cbegin();

    Ano, jde to použít špatně a nečitelně, ale to jde skoro s čímkoliv.

    Jak jsem zmínil, je to pouze syntaktická záležitost a výsledný zkompilovaný kód je stejný, proměnnou nejde deklarovat jako auto bez toho, aby byl jasný její typ. Obdobně pak také nejde měnit její typ za chodu, stejně jako to nejde u žádné jiné proměnné.

    V uvedeném příkladu tak byla špatně už samotná deklarace auto a;.

    U funkce platí totéž, musí být jasné, jaký typ tam má být a všechny returny musí vracet stejný typ (nebo možná kompatibilní typy v případě polymorfických tříd, nevím přesně, přímo standard jsem nečetl).