C++ Standards



  • alex89ru schrieb:

    Naja. Solange C++ nur erweitert wird , und bereits vohandene Sachen nicht geändert bzw nicht "weggeworfen" werden , kann es mir ja egal sein

    Wie gesagt, einige Änderungen kann es schon geben. Gut möglich, dass zB das auto Schlüsselwort eine neue Bedeutung bekommt (oder wurde das mittlerweile wieder verworfen 😕 ). Dennoch, solche Sachen werden relativ überschaubar bleiben.



  • Was hat denn auto bisher für eine bedeutung? 😕 Hab ich bisher nie benutzt.

    Aber laut Herb Sutters letzten Vortrag auf der MS PDC wird auto in den nächsten C++ Standard reinkommen. auto soll einfach Tipparbeit sparen, wenn der Compiler definitiv den Typ erkennen kann.

    std::vector<int> b = foo(); // viel Tipparbeit, wobei es extremere Beispiele gibt. ;)
    b.push_back(100);
    

    kann man in Zukunft dann so schreiben:

    auto b = foo();
    b.push_back(100);
    


  • auto is'n trick um code unverständlicher zu machen.



  • Stimmt! Zum ersten Mal muss ich 9 recht geben.
    So wie der code ausschaut wird der code nicht gerade eindeutig werden.



  • Was hat denn auto bisher für eine bedeutung? 😕 Hab ich bisher nie benutzt.

    auto ist ne angabe wo ne Variable gespeichert werden soll - es gibt static, register usw. auto wird implizit Angenommen wenn du nichts anderes angibst

    z. B.

    auto int a;
    

    ist das gleiche wie

    int a;
    


  • alex89ru schrieb:

    Stimmt! Zum ersten Mal muss ich 9 recht geben.
    So wie der code ausschaut wird der code nicht gerade eindeutig werden.

    Ok, reales Beispiel aus meinem derzeitigen Projekt:

    template<size_t fieldSize>
            std::auto_ptr<std::bitset<fieldSize> > get();
    
    ...
    
    auto_ptr<bitset<48> > foo = blubb.get<48>();
    
    // versus
    
    auto foo = blubb.get<48>();
    

    Auch bei Iteratoren als Rückgabetypen merkt man eine deutliche Verkürzung, z.B. hatte ich mal etwa das hier:

    std::multimap<std::string, Huffman<char> >::iterator iter = foo.begin();
    
    // versus
    
    auto iter = foo.begin();
    


  • Artchi schrieb:

    Was hat denn auto bisher für eine bedeutung? 😕 Hab ich bisher nie benutzt.

    Lokale Variablen, die explizit mit auto gekennzeichnet sind, besitzen "automtic storage duration". Das tun lokale Variablen, die nicht explizit mit static oder extern gekennzeichnet sind aber sowieso. Deshalb brauchst du dich auch nicht wundern, wenn du auto noch nie verwendet hast. Es ist momentan mehr oder weniger nutzlos.



  • auto stammt aus den Anfangstagen von C, genauer gesagt aus B. Dort gab es überhaupt keine Datentypdeklarationen, alle Variablen waren 36-bit-Worte man hat nur die Speicherklasse angegeben:

    auto i;
    static j;
    

    Dass man das in C übernommen hat, könnte mit der impliziten Annahme von int, wenn kein Datentyp angegeben wurde, zu tun haben. Vielleicht gabs in der ersten Version von C das Schlüsselwort int auch gar nicht, das wäre zumindest denkbar.



  • warum auto verwenden wenn es typedefs gibt??

    dabei kann man auch Schreibarbeit sparren und man kann es aber trotzdem noch verstaendlich formulieren.

    leo



  • leo aka qsch schrieb:

    warum auto verwenden wenn es typedefs gibt??

    dabei kann man auch Schreibarbeit sparren und man kann es aber trotzdem noch verstaendlich formulieren.

    leo

    Es gibt keine template-typedefs. Was es meistens nervig macht, immer und immer wieder ein typdef hinzuschreiben.


Anmelden zum Antworten