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