Почему мой деструктор вызывается чаще, чем конструктор?

#include<iostream>
using namespace std;

class A{
public:
    static int cnt;
    A()
    { 
        ++cnt; 
        cout<<"constructor:"<<cnt<<endl;
    }
    ~A()
    {
        --cnt;
        cout<<"destructor:"<<cnt<<endl;
    }
};

int A::cnt = 0;

A f(A x){
    return x;
}
int main(){
    A a0;
    A a1 = f(a0);
    return 0;
}

Программа выведет:

constructor:1
destructor:0
destructor:-1
destructor:-2

Конструктор и деструктор не появляются попарно?

Ответы на вопрос(3)

Ваш ответ на вопрос