Order of Constructor and Destructor Calls in C++

bookmark

#include <iostream>
 
class A {
    int i;
    public:
        A(int ii = 0) : i(ii)
        {
            std::cout << "A::A" << i << "() constructor "
                      << std::endl;
        }
        ~A()
        {
            std::cout << "A::~A" << i << "() destructor "
                      << std::endl;
        }
};
 
A a1(1);
 
int main()
{
    A a2(2);
}

 

Output:
A::A1() constructor
A::A2() constructor
A::~A2() destructor
A::~A1() destructor