析构函数

函数

解构子(英语:Destructor,有时简称 dtor)在面向对象程序设计里是一个方法,当对象的生命周期结束时,它会自动地被呼叫执行。它最主要的目的在于,清空并释放物件先前建立或是占用的记忆体资源。解构子的整体使用概念关键在于RAII。一个具备垃圾回收机制的程式语言,无法确保解构子是否会被执行,通常这类的程式语言不属于RAII的范围内。这类的程式语言,只要经由某个适当的函式,通常会呼叫Dispose()函式,做呼叫的动作,那么它一定会从现有资源释放物件。与使用垃圾回收机制的Finalize()相比,建议使用解构子是释放资源的适当做法[注 1]

代码示例

class Demo{
public:
    ~Demo()                     //定义析构函数
    {
       std::cout << "调用了析构函数 " << std::endl;
    }
};

int main()
{
   {
      Demo demo ;   
   }               // 在部分开发环境中可能没有显示内容,把它放在块儿中即可
    return 0;   //返回之前调用析构函数;
}

运行结果为: 调用了析构函数

第二种调用方式:

class Demo{
public:
    ~Demo()                     //定义析构函数
    {
       std::cout << "调用了析构函数 " << std::endl;
    }
};

int main()
{
    Demo();      //在Visual Studio 2017中运行。
    return 0;  
}

运行结果与上方相同

注释

  1. ^ Finalize(),Finalize函式,英语:Finalizer

参考资料

相关条目