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

思维导图如下:

相关推荐
渡我白衣1 小时前
HttpRequest与HttpResponse的实现
服务器·数据结构·c++·人工智能·tcp/ip·机器学习·caffe
刃神太酷啦1 小时前
前端入门第一课:HTML 基础语法 + 常用标签 + 实战全解
服务器·c语言·前端·javascript·css·c++·html
蒸蒸yyyyzwd1 小时前
八股学习笔记 day42
c++·八股
凤年徐2 小时前
C++ 仿 muduo 高并发服务器:用户态缓冲区 Buffer 模块实现
linux·c++
晴天的雨.9924 小时前
【C++算法】和为s的两个数
开发语言·数据结构·c++·算法
知识分享小能手14 小时前
C++ 学习教程,从入门到精通,C++ 入门知识 — 完整知识点(1)
开发语言·c++·学习
qq_1998868715 小时前
第8板块·第2节:统一内存的高级特性与性能调优
c++·人工智能·gpu算力·cuda
2401_8390805416 小时前
C++常见八股
数据结构·c++·算法
qq_1998868716 小时前
第6板块 第2节 CUDA运行时API与驱动API 核心笔记
c++·人工智能·gpu算力