首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++对象数组的析构函数小疑点

2012-08-17 
C++对象数组的析构函数小问题C/C++ code#include iostreamusing namespace stdclass Test{public:~Test

C++对象数组的析构函数小问题

C/C++ code
#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;}//如果可行的话,贴下您的代码。谢谢!


[解决办法]
C/C++ code
    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,这样效率慢

热点排行