Я попробовал следующую программу на Visual Studio 2010.
#include <iostream>
using namespace std;
class A {
public:
int p;
/*A(){
cout << "Constructor A" << endl;
}*/
~A(){
cout << "Destructor in A" << endl;
}
};
class D: public A
{
public:
/*D(){
cout << "Constructor D" << endl;
}*/
~D(){
cout << "Destructor in D" << endl;
}
};
int main()
{
D d = D();
cout << "Exiting main" << endl;
}
Выход, который я получил, -
Destructor in D
Destructor in A
Exiting main
Destructor in D
Destructor in A
Я не могу понять, почему деструктор класса D и A вызывается перед выполнением инструкции "Выход из основного"?
Я попробовал другое - я раскодировал конструктор класса D в приведенном выше коде, тогда вывод был как я ожидается -
Constructor D
Exiting main
Destructor in D
Destructor in A
Что мне здесь не хватает?