析构器

析构器特点

  • ~+类名
  • 没有返回值
  • 在实例化对象被销毁时自动调用
  • 不可以带形参
  • 不可以重载

析构器的触发条件有2个:

  1. 堆对象,delete关键字触发
  2. 栈对象,离开栈的作用域时会被自动触发
#include <iostream>
using namespace std;

class Stopwatch
{
public:
    //构造器
    Stopwatch(){
        cout<<"构造器"<<endl;
        name = new char[20];
    };
    //析构器
    ~Stopwatch(){
        cout<<"析构器"<<endl;
        if (name) {
            delete name;
        }
    };
public:
    char* name;

};
int main(int argc, char const *argv[])
{
    /* code */
    {
        Stopwatch wc; //栈对象,离开栈的作用域时,析构器自动触发
    }

    Stopwatch wc1; //栈对象,离开栈的作用域时,析构器自动触发
    Stopwatch* wc2 = new Stopwatch(); //堆对象,离开栈的作用域时,析构器自动触发
    delete wc2;

    return 0;
}


/*
构造器
析构器
构造器
构造器
析构器
析构器
*/

results matching ""

    No results matching ""