C++ 析构函数

 

 

  接下来,我们准备为大家介绍"析构函数"。

 

   (1)析造函数的名字必须与类名相同,且整个类中只有一个。

 

   (2)析构函数没有返回类型,没有参数。

 

   (3)析构函数在类的"对象"生命周期结束之前会被系统自动调用。

 

   (4)可以在析构函数中对已经分配的资源进行释放,例如,通过new所分配的内存空间,在对象

      生命周期结束之前就要释放掉。

 

  析构函数的语法格式如下:

 

      ~ 类名()

        {

          代码;

        }

 

  语法格式分析:

  (1)波浪符号~ 格式要求,不能省略。

  (2)必须是所在类的类名。

  (3)一对大括号,代表函数的主体。

  (4)在大括号中可以编写函数主体的代码。

  

 

 

 

接下来,我们就结合例子来作进一步的学习

 

例子1:

Class  DongWu   //动物类

{

  public:

    int head; //头

    int body;  //身

    int Leg;  //腿

    int  x;    //移动的距离

 

    char *name; //名字  

 

    DongWu() //构造函数

    {

     head = 1;

     body = 1;

     Leg = 4;

     Tail = 1;

     name = new char[50]; //通过new分配字符数组的内存空间,并返回内存空间的起始地址给name

    }

 

    ~DongWu()

    {

      delete name; //释放name所指向的内存空间

    }

 

    void MX(); //移动的方法

};

 

void main()

{

   DongWu Cow1; //定义对象Cow1,同时,系统自动调用了构造函数,并在构造函数中通过

             new分配了内存空间,并返回内存空间的起始地址给属性name。

 

 

   DongWu *Cow2;    //定义了指针对象Cow2

 

   Cow2 = new DongWu;  //首先,调用构造函数,然后,在构造函数中,通过new分配内存空间,

               并返回内存空间的起始地址给属性name。

               然后,再通过new分配内存空间,并返回内存空间起始地址给Cow2。

 

   delete Cow2;       //调用delete前先调用析构函数,将name所指向的内存空间释放掉,

                 然后,再释放Cow2所指向的内存空间。

}

 

代码分析:

 

(1)在DongWu类中,添加了一个name属性,用于存放名字。

 

(2)在构造函数中,通过new分配字符数组的内存空间,并返回内存空间的起始地址给name

 

(3)在类中添加了析构造函数,并在析构函数中通过delete对name所指向的内存空间进行释放

 

(4)当类所定义的对象Cow1在生命周期结束时,即main函数执行完毕时,系统就会自动调用类中的析

   构函数,这样,就可以将对象所占用的资源,即name所指向的内存空间释放掉。

 

(5)代码中再定义了指针对象Cow2,并通过new分配了内存空间。

 

(6)当通过delete释放Cow2所指向的内存空间时,会先调用类中的析构函数,从而,先将name所指向的

   内存空间通过delete释放掉,然后,再释放类的指针对象Cow2所指向的内存空间。

 

 

 

 

  通过上面的学习,相信大家对析构造函数有了一个初步了解,但是,如何灵活地运用这个知识点呢?那么,我们就要通过下方的按钮进入到游戏中,然后,运用该知识点去完成任务,这样,才可以加深大家对该知识点的理解和运用,以及“尽快进入到编程的状态”

 

  要达到灵活运用,是需要通过不停地反复训练才可以做到,所以,不要停留在理论规则上面,快动起来吧!

 

 

(通过游戏模式学习与训练,需要在电脑上运行)

进入游戏学习与训练