I tried this code:
#include <iostream>
using namespace std;
class A {
public:
A(){cout<<"A();";}
~A(){cout<<"~A();";}
};
class B : public A {
public:
B(){cout<<"B();";}
~B(){cout<<"~B();";}
};
int main() {
A a =B();
return 0;
}
Output: A();B();~B();~A();~A();
Why is A's destructor invoked 2 times?