C++程序有关问题,为什么这个程序的输出结果是5 3,谁帮小弟我解释一下,多谢

C++程序问题,为什么这个程序的输出结果是5 3,哪位高手帮我解释一下,谢谢。
#include <iostream>
using namespace std;
class point 
{
public:
static int number;
public:
point() { number++;}
~point() {number--;}
};
int point::number=0;

void main()

point *ptr;
  point A,B;
{
point *ptr_point=new point[3];
ptr=ptr_point;
cout<<point::number;
}
point C;
delete[] ptr;
cout<<point::number;
}


------解决方案--------------------
static int number; 类的对象公用一个副本number
 point A,B; 2个

point *ptr_point=new point[3]; 3个
所以5个
point C; 1个
delete[] ptr; 减3个
所以2+3+1-3=3
------解决方案--------------------
point *ptr;

这里不调用构造函数