Referenz auf nicht initialisiertes Objekt im Konstruktor

Es ist möglich, ein nicht initialisiertes Objekt wie im folgenden Beispiel an eine übergeordnete Klasse zu übergeben.

class C
{
    public:
        C(int i): 
            m_i(i)
        {};

        int m_i;
}

class T
{
    public:
        T(C & c):
            m_c(c)
        {
        };

        C & m_c;
};


class ST : public T
{
    public:
        ST():
            T(m_ci),
            m_ci(999)
        {
        };

        C m_ci;
};

Imclass T Konstrukteur,c ist ein Verweis auf ein nicht initialisiertes Objekt. Wennclass T benutztenc Objekt während des Aufbaus, dies würde möglicherweise zu einem Fehler führen. Da dies jedoch nicht der Fall ist, wird es kompiliert und funktioniert einwandfrei. Meine Frage ist - bremst es eine Art Paradigma oder gute Designrichtlinien? Wenn ja, welche Alternativen gibt es? Ich fand es nützlich, ein Objekt, das von einem Elternteil benötigt wird, einer Unterklasse zuzuweisen.

Nebenbei bemerkt frage ich mich, warum es nicht möglich ist, die Initialisierungsreihenfolge zu ändern, sodass der Basisklassenkonstruktor nach der Initialisierung einiger Member aufgerufen wird.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage