文章目录
前言
本章的知识为C++类与对象的第二小节,第一小节见主页。内容详细且通俗易懂,话不多说,我们这就开始!
一、构造函数与析构函数
首先,要清楚这两个函数的作用。
1)构造函数,作用是对定义的对象进行初始化。由于定义对象后,对象没有被赋值,它的值是不可知的,对象是一个实体,它的每一个数据成员都应该有确定的值。
2)析构函数,作用是在对象的生命周期结束后,释放对象的内存空间。
1.对象的初始化和构造函数
构造函数为一类特殊的成员函数,构造函数的函数名必须与类名相同,可以有任意的参数,但没有返回值类型。无需主动调用,在建立对象时自动执行。使用构造函数赋初值有以下两种方式。
1)如下代码,在定义对象时赋值,格式为类名 对象名 (实参表),定义对象后,系统自动调用构造函数,为day1,day2赋初值。
2)使用new动态建立对象,格式为:类名 *指针变量名=new 类名(实参表),当p使用结束后,可以用delete释放。
说明
1)与普通成员函数一样,构造函数也可以在类内声明,类外定义,代码如下。
2)构造函数除赋值外,可以加入其他功能,但不推荐。
2.使用成员初始化列表进行初始化
C++还提供另一种用成员初始化列表来对数据成员进行初始化。格式为类名::构造函数名(参数表):成员初始化列表。成员初始化列表的格式为 数据成员名1(初始值1),数据成员名2(初始值2)。代码如下这种方式有什么特别的好处吗?由于const修饰的数据成员,以及引用类型的数据成员不允许用赋值语句直接赋值,所以,只能使用成员初始化列表。
3.带默认参数的构造函数
若构造函数带参数,在定义对象时必须给构造函数传值,否则,构造函数不能被执行。但实际应用中,一些构造函数的参数值大部分情况下时相同的。如大学本科制默认为4年,这时,可以将其定义成默认参数的构造函数
上述代码中,p没有传递实参,采用默认值。q有两个实参,m只有一个实参,按顺序赋值,此处的顺序指的是类中数据声明的顺序,所以“10.5”被赋值给today,wheth取默认值。
4.析构函数
析构函数也是一种特殊的成员函数,用于执行一些清理任务,释放分配给对象的内存空间。格式为 ~ 类名 ()。。例如~ Weather();析构函数无返回值类型,不能被重载。无需调用,系统会自动在对象生命周期结束时,释放对象的内存空间
二、对象数组与对象指针
1.对象数组
对象数组指每一个数组元素都是对象的数组。格式为 类名 数组名【下标表达式】。例如有10个日期为,Date day[10];数组元素的初始化如下代码
2. 对象指针与this指针
1)对象指针声明形式为 类名 * 对象指针名,如下代码q=p,将数组p的元素首地址赋值给q。指针q访问函数,用符号->
2)this指针,C++为成员函数提供this指针,成为自引用指针。每当创建一个对象时,this指针指向该对象,即this指针的值就是对象的起始地址。
总结
本章为类与对象第二小节,讲的是构造函数,析构函数,对象数组和对象指针。那么本小节到这里就就结束啦~后续知识持续更新,我们不见不散!