Witam, mam do rozkminienia takie zadanie. "Co zostanie wypisane w jakiej kolejności i dlaczego?". Co to funkcje wirtualne mniej więcej wiem, nie miałem okazji korzystać z nich w swoich programach (chyba że testowo do nauki) a konstruktory/destruktory to oczywista oczywistość. Jednak nie bardzo wiem czym się kierować w tego typu zadaniach, jak to działa
#include <iostream>
#include <list>
#include <string>
class A
{
public:
virtual void f()
{
printf("A.f ");
}
A()
{
f();
}
};
class B : public A
{
public:
void f()
{
printf("B.f ");
}
B()
{
f();
}
~B
{
printf("~B.f ");
}
};
B b; //uwaga!
int main()
{
A*a = new B();
printf("M ");
delete a;
return 0;
}
wypisane zostaje
A.f B.f A.f B.f M ~B.f
Wiem tylko dlaczego pierwsze 2 się wyświetlają bo przy tworzeniu obiektu w ten sposób
B b;
jest wywoływany i konstruktor i destruktor a przy new tylko konstruktor.
Pozdrawiam