Дан текст программы
#include
using namespace std;
class Object
{
public:
Object() { cout << "Object::ctor()" << endl; }
~Object() { cout << "Object::dtor()" << endl; }
};
class Base
{
public:
Base() { cout << "Base::ctor()" << endl; }
virtual ~Base() { cout << "Base::dtor()" << endl; }
virtual void print() = 0;
};
class Derived: public Base
{
public:
Derived() { cout << "Derived::ctor()" << endl; }
~Derived() { cout << "Derived::dtor()" << endl; }
void print() {}
Object obj;
};
int main ()
{
Base * p = new Derived;
delete p;
return 0;
}
В каком порядке будут вызываться деструкторы?

  • Сначала деструктор класса Base, затем деструктор класса Derived, последним деструктор класса Object
  • Сначала деструктор класса Derived, затем деструктор класса Object, последним деструктор класса Base
  • Сначала деструктор класса Object, затем деструктор класса Base, последним деструктор класса Derived
  • Сначала деструктор класса Object, затем деструктор класса Derived, последним деструктор класса Base
Для просмотра статистики ответов нужно залогиниться.