Witam,
Czy ktoś mógłby mi powiedzieć jak dokładnie wygląda proces tworzenia, a potem niszczenia obiektów w c++? Chodzi mi dokładnie o to, które konstruktory wywoływane są najpierw(klasy bazowej, potomnej, czy może konstruktory pól składowych), co jeżeli funkcje wywoływane w konstruktorach są wirtualne itd.
Np.
class A
{
public:
virtual void f()
{
cout<<"A.f()";
}
~A()
{
f();
}
};
class B : public A
{
A a;
public:
void f()
{
cout<<"B.f()";
}
B()
{
throw -1;
}
~B()
{
f();
}
};
int main()
{
try
{
B b;
}
catch(...)
{
cout<<"Exc";
}
return 0;
};
Jaka będzie kolejność wywołań w tym przykładzie? Co i najważniejsze dlaczego się wyświetli?