zwei Fragen



    ist for( ; ; ) das gleiche wie while(1)?

    class a
    {
       int* x;
    ...
    
    }
    
    class b
    {
       a a_;
    ...
    }
    
    ...
    b* b_ = new(b);
    
    delete(b);
    

    würde x automatisch mit gelöscht werden?



  • ad 1)

    #include <iostream>
    
    int main( )
    {
        for( ; ; )
            std::cout << "fext";
    }
    

    und

    #include <iostream>
    
    int main( )
    {
        while( true )
            std::cout << "text";
    }
    

    erzeugten bei mir beide

    push offset string "text"
    push offset std::cout
    call std::operator<<
    add  esp, 8 
    jmp  main
    

    und sind damit (zumindest in diesem Falle) ident.

    ad 2)

    x: ja
    der Speicher, auf den x gegebenenfalls zeigt: nein

    Greetz, Swordfish



  • Zu 1: logisch gesehen erzeugen beide Varianten eine Endlosschleife (und eine for-Schleife lässt sich auch zur while-Schleife umbauen). Ob der Compiler die Identität erkennt und den selben Maschinencode erzeugt, ist die andere Frage.



  • desswegen sagte ich

    Swordfish schrieb:

    erzeugten bei mir beide [...]
    und sind damit (zumindest in diesem Falle) ident.

    Greetz, Swordfish


Anmelden zum Antworten