一、this指针
1.1.引入
上一节中,Date类有Init和Print两个成员函数,d1和d2同时调用了Init和Print函数,那么是如何访问d1对象和d2对象的呢?在这里C++给了有一个隐含的this指针来解决问题。
1.2.如何实现的?
编译器编译后,类的成员函数默认会在形参的第一个位置,增加一个当前类型的指针,叫做this 指针。例如void Print(Date*const this,int year,int month,int day)
1.3.成员函数如何访问成员变量
类的成员函数访问成员变量,本质上是通过this指针访问的,例如Init中的this->year=year;
1.4.C++规定的this指针使用限制
C++规定不能在实参和形参的位置显示地写this指针,但是可以在函数体内显示地使用this指针
例如:
void Init(int year,int month,int day){
this->_year=year;
this->_month=month;
this->_day=day;
}
1.5.思维导图

二、类的默认成员函数
2.1.什么是类的默认成员函数?
默认成员函数是指用户没有显示实现,编译器会自动生成的成员函数。
2.2.默认成员函数的分类

三、构造函数
3.1.什么是构造函数?
构造函数是一类特殊的成员函数。
3.2.构造函数的作用
构造函数的主要作用是对象实例化时初始化对象。可以替代我们之前写的Stack和Date类中Init函数的功能。
3.3.构造函数的特点
a.函数名与类名相同
b.无返回值
c.对象实例化时系统会自动调用对应的构造函数
d.构造函数可以重载
e.如果类中没有显式定义构造函数,则C++编译器会⾃动⽣成⼀个⽆参的默认构造函数,⼀旦⽤⼾显 式定义编译器将不再⽣成。
总结: 大多数情况下,构造函数需要我们自己去实现,少数情况类似MyQueue且stack有默认构
造时,MyQueue自动生成就可以用
f.无参构造函数、全缺省构造函数、我们不写编译器默认生成的构造函数,都叫做默认构造函数。注意这三个函数有且仅有一个存在,不能同时存在。
d.我们不写,编译器默认生成的构造,对内置类型(如:int/char/double/指针等)成员变量的初始化没有要求,是否初始化看编译器,对于自定义类型(我们使⽤class/struct等关键字⾃⼰定义的类型。)成员变量,要调用这个成员变量的默认构造函数初始化。
思维导图如下:
