> 文章列表 > C++————构造函数与析构函数

C++————构造函数与析构函数

C++————构造函数与析构函数

在C++中,我们有一个专门有一个函数给类的成员赋值,这个赋初值的工作由构造函数来完成。

说明:

1.构造函数的名字必须与类名相同,否则编译程序将把它当成一般的成员函数来处理。

2.构造函数没有返回值,在定义构造函数时,是不能说明它的类型的,void类型也不可以。

3.与普通成员函数一样,构造函数的函数体可写在类体内,也可以写在类体外。

4.构造函数一般用于赋初值,根据用户的需求设置。

5.构造函数可以带默认参数。

6.在实际的应用中,通常需要给每个类定义构造函数。如果没有给类定义构造函数,系统自动生成一个默认的构造函数,这个构造函数的函数体是空的。

7.构造函数是在对象定义的时候调用的。

8.构造函数还支持重载。

我们来使用一下构造函数

我们输出30

这个是我们赋初值的效果。 

 

我们接下来看看其他赋初值的方法

 

 我们如何验证构造函数是在对象建立的时候进行赋初值

 

构造函数赋初值是在对象建立的时候进行的。

析构函数有什么作用,它与构造函数功能有着相反的作用,构造函数是赋初值,我们的析构函数是一个善后,释放内存分配给对象的空间,我们在对象销毁的时候会调用析构函数

析构函数说明:

1.析构函数与类名相同,但它前面必须加一个波浪号(~)

2.析构函数不返回任何值。viod类型也不行。

3.析构函数没有参数,不可以被重载。

4.撤销对象时,编译系统会自动调用析构函数。

5.new申请的对象,如果我们不手动释放,不能调用析构函数。

析构函数调用:

1.函数结束。

2.程序结束。

3.包含局部函数变量的块结束。

4.调用删除运算符(delete)。

析构函数的使用

假如这个是程序阅读题,我们应该怎么输出。

先调用构造函数,所以先输出一句调用构造函数的语句,如何输出29,如何再调用一个构造函数,输出200。

我们析构函数应该先释放那个对象,这个涉及到函数栈的问题,先创建的对象在栈低是最后释放的,所以我们先释放p2对象,p1对象最后释放。

这个就像一个死胡同,只有先进来的人出去,前面进来的才能出去。

 

new申请的空间不能自动调用析构函数。

 

使用delete释放空间后就会调用析构函数,