C++问题,为什么会输出B 2?这个2是哪来的

#include

#include

#include <stdlib.h>

using namespace std;

class A {

public:

A(int x){ i = ++x; cout<<"A "<<i<<endl; } // 构造函数

~A(){ --i; cout<<"C "<<i<<endl; } // 析造函数

A(A &r)

{this-> i = ++i; cout<<"B "<i<<endl;}

private:

int i; };

int main( ) {

A a(5);  

A b(a); 

system("pause");

return 0;}

++--来的