Was war Ihre neueste Entdeckung über C ++?



  • Sogar die erfahrensten C ++ - Entwickler entdecken gelegentlich etwas Neues / Überraschendes an der Sprache. Ich habe kürzlich etwas über "Kontextuell konvertierbar zu Bool" gelernt und war wirklich überrascht, dass ich noch nie davon gehört habe. Was war dein letzter "oh, ich wusste nichts über diesen" Moment?



  • Dass Data-Member deren Typ ne Referenz ist das Erzeugen eines "implizit definierten" Assignment-Operators verhindern. Was "lustig" ist, denn das ist schon seit C++98 so.



  • C++ >= C++11 bietet viele Neuerungen. RValue Referenzen sind eine dieser Neuerungen und können wie cv Qualifiers an Funktionen gebunden werden.

    #include <iostream>
    
    
    class Test
    {
    public:
        void Hello() &
        {
            std::cout << "Hello World from lvalue reference!\n";
        }
    
        void Hello() &&
        {
            std::cout << "Hello World from rvalue reference!\n";
        }
    
        void Hello() const &
        {
            std::cout << "Hello World from const lvalue reference!\n";
        }
    
    };
    
    
    int main(int argc, char** argv)
    {
        Test t1;
    
        t1.Hello();  // gibt "Hello World from lvalue reference!" aus
    
        Test().Hello(); // gibt "Hello World from rvalue reference!\n" aus
    
        static_cast<const Test&>(t1).Hello(); // gibt "Hello World from const lvalue reference!\n" aus
        return 0;
    }
    

Log in to reply