Reihenfolge Initialisierungsliste



  • Ist das durch den Standard gedeckt:

    class Element_proxy
    {
    Element* pElement;
    int& section;
    };

    Element_proxy::Element_proxy( const Element& element)
    :pElement( new Element( element)),
     section( pElement->section)
    {
    }
    

    die 2. Zeile der Initialisierungsliste setzt voraus, dass pElement bereits erzeugt ist.



  • Die Reihenfolge der Abarbeitung der Initialisierungsliste wird ausschließlich durch die Reihenfolge der Member in der Klassen-Definition bestimmt. Bei

    class Element_proxy
    {
      Element* pElement;
      int& section;
    };
    

    wird pElement immer vor section initialisiert, selbst dann wenn man im Konstruktor

    Element_proxy::Element_proxy( const Element& element)
      : section( pElement->section)
      , pElement( new Element( element))
    {}
    

    schreibt (was man aber nicht machen sollte 😉 )

    Gruß
    Werner


Anmelden zum Antworten