jest możliwe przejście niezainicjowanego przedmiotu do grupy macierzystej, jak w poniższym przykładzieniezainicjowanego odniesienia do obiektu iniside konstruktora
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;
};
W class T
konstruktora c
jest odniesienie do niezainicjowanego obiektu. Jeśli obiekt class T
używałby obiektu c
podczas budowy, może to prowadzić do błędu. Ale ponieważ nie jest, to kompiluje i działa dobrze. Moje pytanie brzmi: czy hamuje jakiś paradygmat lub dobre dyrektywy projektowe? Jeśli tak, jakie są alternatywy, ponieważ uznałem za przydatne przydzielić obiekt wymagany przez obiekt macierzysty w podklasie.
Zastanawiam się, dlaczego nie jest możliwa zmiana kolejności inicjalizacji, aby konstruktor klasy podstawowej został wywołany po inicjalizacji niektórych elementów.