Warum wird mein Destruktor anscheinend häufiger aufgerufen als der Konstruktor?

#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;
}

Das Programm gibt aus:

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

Konstruktor und Destruktor erscheinen nicht paarweise?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage