C++之类和对象(上)02

一、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等关键字⾃⼰定义的类型。)成员变量,要调用这个成员变量的默认构造函数初始化。

思维导图如下:

相关推荐
ShineWinsu2 小时前
对于Qt:QRadioButton常见属性以及QButtonGroup的解析
数据库·c++·qt·microsoft·gui·qradiobutton·qbuttongroup
傲世仙尊2 小时前
多态-虚表才活到运行期符号表早已消失
c++
chenbingjie_c2 小时前
C++ 多态完全指南:从虚函数重写到虚函数表原理
开发语言·c++
是main不是漫2 小时前
【双指针——移动零】数组划分类题目的入门基石
c++·算法
·present·2 小时前
CSAPP(Bomb lab)
c语言·c++
王老师青少年编程2 小时前
2026年信奥赛c++普及组csp-j第二轮复赛真题
c++·真题·csp·信奥赛
时间的拾荒人4 小时前
CMake 常用命令详解:从版本声明到安装部署
c++·面试
D e re k ZH6 小时前
P5025 [SNOI2017] 炸弹
c++·算法
wuminyu7 小时前
Java字节码学习总结:字节码如何加载、解析和执行
java·linux·c语言·jvm·c++
qq_406981037 小时前
c++的decltype是什么
开发语言·c++