C++对象数组的析构函数小问题
#include <iostream>using namespace std;class Test{public: ~Test(){cout<<"Destructor called:"<<X<<','<<Y<<endl;} void Set(int i,int j); void Print(){cout<<X<<","<<Y<<endl;}private: int X,Y;};void Test::Set(int i,int j){X=i;Y=j;}void main(){ Test*ptr3; ptr3=new Test[2]; ptr3[0].Set(5,6); ptr3[1].Set(7,8); ptr3[0].Print(); ptr3[1].Print(); delete []ptr3;//除了这种办法,我想数组里一个对象一个对象的释放,可行吗? return;}//如果可行的话,贴下您的代码。谢谢!
Test *ptr3[2]; for(int i=0; i!=2; i++) { ptr3[i] = new Test; } ptr3[0]->Set(5,6); ptr3[1]->Set(7,8); ptr3[0]->Print(); ptr3[1]->Print(); //delete []ptr3;//除了这种办法,我想数组里一个对象一个对象的释放,可行吗? for(int i=0; i!=2; i++) { if(ptr3[i]) delete ptr3[i]; }
[解决办法]
new []和delete []要成对出现,所以你那程序不能一个一个释放。可以一个一个new。再一个一个delete,这样效率慢