在c++中有六种默认成员函数,比如构造函数、析构函数等等,它们在程序员不书写的时候也会自动生成,发挥着重要的作用,今天我们就一起来探究一下构造函数。

c++类的默认成员函数:构造函数_构造函数

在讲构造函数之前,我们还要补充一些类开辟空间的知识

注意如果定义了成员变量,成员变量是占用空间,它是按照C语言中的结构体的内存对齐方式来开辟空间的

c++类的默认成员函数:构造函数_初始化_02

类中还存在一个默认的指针,叫做this指针,我们不能在形参中写this指针,但是我们可以在函数体中使用this指针。

c++类的默认成员函数:构造函数_构造函数_03

 关于类,我们通过下面这个代码来加深印象

c++类的默认成员函数:构造函数_c++_04

 

c++类的默认成员函数:构造函数_开发语言_05

这样子是直接将地址传过去,不会发生解引用

c++类的默认成员函数:构造函数_构造函数_06

 关于this指针,我们作以下补充:

c++类的默认成员函数:构造函数_构造函数_07

 所以究竟什么是构造函数,它有什么作用???

c++类的默认成员函数:构造函数_开发语言_08

本质上构造函数就是帮助我们进行初始化的工具 

c++类的默认成员函数:构造函数_this指针_09

我们来看我们之前写的日期类的构造函数应该如何书写

c++类的默认成员函数:构造函数_开发语言_10

 

我们也可以写成全缺省的形式

c++类的默认成员函数:构造函数_c++_11

 

 对于实现栈来说,我们在使用的过程中难免会开辟空间,这样会导致异地扩容,所以为了减少这样的情况,我们可以使用构造函数进行初始化

c++类的默认成员函数:构造函数_this指针_12

实现好的栈的构造函数 

        

c++类的默认成员函数:构造函数_this指针_13

 这样子创建栈的时候我们就可以不用异地扩容了

对于构造函数我们要注意

内置类型就是程序中自带的变量,如int、char、double、指针

c++类的默认成员函数:构造函数_初始化_14

c++类的默认成员函数:构造函数_构造函数_15

 下面我们来通过例子来展示构造函数的优势

在下面这个问题中,我们创建的队列会直接调用类中的两个栈的构造函数进行初始化,这样这个类的队列就不用另外写一个构造函数 

c++类的默认成员函数:构造函数_this指针_16

c++类的默认成员函数:构造函数_构造函数_17

 

c++类的默认成员函数:构造函数_初始化_18

到这里我们就将构造函数大概解释清楚了,希望对大家有所帮助