C++析构函数

    xiaoxiao2021-04-15  60

    1. 定义

        “~<类名>”

        没有参数和返回值类型的成员函数。

    2. 调用

        当对象消亡时,在系统收回它所占的存储空间之前,它的析构函数会自动被调用。

        一般清空下不需要定义析构函数,但是,如果对象在创建后申请了一些资源并且没有归还这些资源,就要定义析构函数在对象消亡前归还这些资源。

        如果类中为提供析构函数,编译程序会在需要时隐式提供一个析构函数,该析构函数负责调用成员对象类和基类的析构函数。

    class A() { char *str; public: A() { str=NULL; } A(const char *p) { str = new char(strlen(p)+1); strcpy(str,p); } ~A() { delete []str; str = NULL; } }

        当包含成员对象的对象消亡时,先调用本身类的析构函数,本身类的析构函数的函数体执行完毕后,再调用成员函数对象类的析构函数(在继承中,先调用和执行自己的析构函数,然后调用成员对象类的析构函数,最后调用基类的析构函数)。如果有多个成员对象,则成员对象析构函数的调用次序与它们定义的次序正好相反。

    转载请注明原文地址: https://ju.6miu.com/read-670871.html

    最新回复(0)