C++ - 析构函数

2016-01-14  本文已影响68人  Mitchell
class String{
  private:
      char * p;
  public:
      String(){
          p = new char[10];
       }
      ~String();
};
String::~String(){
//注意,由于要释放的是数组,所以前面必须有[],如果用 delete p 只是释放了一个对象。
    delete [] p;
}
Ctest * pTest;
p'Test = new Ctest;// 构造函数调用
delete pTest;//析构函数调用
pTest = new Ctest[3];//构造函数调用3次
delete[] pTest;//析构函数调用3次
Demo d1(1);
void Func(){
    static Demo d2(2);
    Demo d3(3);
    cout<<"Func"<<endl;
}
int main(){
    Demo d4(4);
    d4 = 6;
    cout<<"main"<<endl;
    {Demo d5(5);  }
    Func();
    cout<<"main ends"<<endl;
    return 0;
}
输出:
id = 1  Constructed
id = 4  Constructed
//复制构造函数会创建一个临时的对象
id = 6  Constructed
id = 6  Destructed// d4的 id = 6
main
id = 5  Constructed
id = 5  Destructed
id = 2  Constructed
id = 3  Constructed
Func
id = 3  Destructed
main ends
id = 6  Destructed//d4
id = 2  Destructed
id = 1  Destructed
上一篇 下一篇

猜你喜欢

热点阅读