今日c++学习心得

理论课

学习了类的相关知识

面向对象编程的特点

类是 C++ 的核心特性,通常被称为用户定义的类型。
类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。
类中的数据和方法称为类的成员。函数在一个类中被称为类的成员。
面向对象的三大特征是封装继承多态
类的使用者只需要利用接口使用类,不必知道具体的实现细节

类的成员函数

成员函数的声明必须在类的内部,定义可以在内部或外部
定义在类内的函数是隐式的内联函数,成员函数通过点运算符访问
类内的成员访问是通过this这个隐式形参访问的
在形参列表后加上const可以使this指向常量
在类外部定义的成员函数必须加上所属的类名,它可以访问类内成员

构造函数

类通过一个或几个成员函数控制对象的初始化过程
无论何时只要类的对象被创建,就会执行构造函数
构造函数的名字与类名相同,没有返回类型
有参数列表和函数体,但都可以为空,且构造函数可以对const写值
当类没有任何构造函数时,会自动生成默认构造函数,它不接受任何实参
构造函数在冒号与函数体之间创建构造函数初始值列表,没有显式初始化的成员执行隐式初始化
成员初始化的顺序与类内出现的顺序一致,而不是初值列表的顺序
如果一个构造函数为所有参数提供默认实参,实际上相当于一个默认构造函数
构造函数可以委托其他构造函数执行初始化过程
如果定义了其他构造函数,最好也提供一个默认构造函数

访问控制与封装

public后面的成员可以在整个程序里访问,private后的只能在类内访问
class默认是private,struct默认是public
可以通过友元使非成员函数或其他类访问类内的成员,加上friend开头的声明语句即可
特别注意:友元声明不能代替函数声明,如果要使用该函数,还是要声明它

类类型

每个类定义了唯一的类型,即使两个类成员完全一样,也是两个不同的类型
可以通过 classname instance;定义一个类类型的对象,定义时即初始化,此处执行默认初始化
类可以在定义前声明,在定义前是一个不完全类型,不能访问成员,但可以定义指针
类名出现即视为声明,因此类可以包含指向它自身类型的引用或指针(如链表)

友元

友元还可以是其他类或其他类的成员函数,对于重载函数要逐个进行友元声明
友元不具有传递性,即友元的友元不是我的友元

类的作用域

每个类都有自己的作用域,作用域之外只能通过对象或指针来访问类内成员
定义在类外部的成员要访问类内成员,要说明所处类,特别地,返回值类型要单独说明
classname::member classname::memberfunction(){}
类会首先编译成员的声明,直到类全部可见后再编译函数体,所以函数总是可见成员的
函数中名字查找首先在函数内部查找,然后在类内查找,最后到函数定义前的作用域查找

隐式类类型转换

只有一个实参,并且只需进行一步转换即可是,会进行类类型转换
如果要抑制这种转换,可以将单参构造函数声明为explicit
同时,explicit只能用于直接初始化,不能用与拷贝初始化
但我们还是可以通过显式的强制类型转换使用explicit或非explicit构造函数

实践课

完成了三道编程题
编写了readme文档,键入学习心得
使用git进行版本控制

力扣刷题记录

本周完成了31题,包含15道简单,14道中等,2道困难
收获主要是熟悉了链表的基本操作,对双指针法和回溯法有了更深的理解
力扣记录
力扣记录