最后为什么连续析构了三个?

最后为什么连续析构了三个?(输出结果是从电脑上抄的,没问题)

img

img


#include <iostream>
using namespace std;
class A
{
    int x;
public:
    A(int a)
    {
        x = a;
        cout << "x=" << x << "\t" << "A_1" << "\n";
    }
    A(A &s)
    {
        x = s.x + 1;
        cout << "A_2" << "\n";
    }
    ~A()
    {
        cout << x << "\t" << "~A" << "\t";
    }

};
void main(void)
{ 
    A f1(2);//创建f1 输出 x=2 A_1
    A f2(f1);//创建f2 输出 A_2
    f2 = A(3);//创建 A(3)对象 输出 x=3 A_1  复制给f2  析构 A(3) 输出 3 ~A   此时的f2的x值为3
    f1 = A(f2);//创建 A(f2)对象 输出 A_2 复制给f1  析构 A(f2) 输出 4 ~A  f1的值为4
    //程序退出 析构 f2 输出 3 ~A   和 f1 输出 4 ~A 
}