第22课-对象的销毁

1. 对象的销毁

  • 生活中的对象都是被初始化后才上市的

  • 生活中的对象被销毁前会做一些清理工作

  • 问题:C++中如何清理需要销毁的对象

  • 一般而言,需要销毁的对象都应该清理

  • 解决方案

    - 为每个类都提供一个publicfree函数

    - 对象不再需要时立即调用free函数进行清理

class Test
{
  int* p;

public:
  Test() {p = new int;}
  void free() {delete p;}
}

 

  • 存在的问题

    - free只是一个普通函数,必须显示的调用

    - 对象销毁前没有做清理,很可能造成资源泄露

  C++编译器是否能够自动调用某个特殊的函数进行对象的清理?

 

2. 析构函数

  • C++的类中可以定义一个特殊的清理函数

    - 这个特殊的清理函数叫做析构函数

    - 析构函数的功能与构造函数相反

  • 定义:~ClassName()

    - 析构函数没有参数没有返回值类型声明

    - 析构函数在对象销毁时自动被调用

  • 析构函数的定义准则

    - 当类中自定义了构造函数,并且构造函数中使用了系统资源(如:内存申请,文件打开,等),则需要自定义析构函数

 

3. 小结

  • 析构函数是对象销毁时进行清理的特殊函数

  • 析构函数在对象销毁时自动被调用

  • 析构函数是对象释放系统资源的保障

本文出处:狄泰软件学院

posted @ 2020-05-13 19:59  WisdomMan  阅读(1)  评论(0)    收藏  举报