È possibile passare oggetto inizializzato a una classe principale come nel seguente esempioRiferimento oggetto non inizializzato iniside costruttore
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;
};
In class T
costruttore, c
è un riferimento all'oggetto inizializzato. Se utilizzava l'oggetto durante la costruzione, questo potrebbe causare un errore. Ma dal momento che non lo è, questo compila e funziona bene. La mia domanda è: blocca qualche tipo di paradigma o di buone direttive di progettazione? Se è così, quali sono le alternative, perché ho trovato utile allocare un oggetto richiesto dal genitore in una sottoclasse.
In una nota a margine, mi chiedo il motivo per cui non è possibile modificare l'ordine di inizializzazione, in modo che il costruttore della classe base venga chiamato dopo l'inizializzazione di alcuni membri.