问题及代码:
#include<iostream>
using namespace std;
class myClass
{
public:
myClass(){ number++;}
~myClass(){ number--;}
static int number;
};
int myClass::number=0;
int main()
{
myClass *ptr; //指向对象的指针
myClass A,B; //新建 A B 两个对象 number+2=2
myClass *ptr_Arr=new myClass[3]; //开辟一个包括三个对象的对象数组 number+3=5
ptr=ptr_Arr; //ptr指向myClass[0]
myClass C; //新建一个对象C number+1=6
cout<<myClass::number<<endl; //输出 number=6
delete []ptr; //释放所开辟的空间 number-3=3
return 0;
}
运行结果:
知识点总结:
进入到程序的运行中区,详细了解程序运行中对象指针和构造函数,析构函数的机制。
在 delete []ptr; 后加一个 cout<<myClass::number<<endl;
得到证实析构函数的运行机制