C++_week8
今日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道困难
收获主要是熟悉了链表的基本操作,对双指针法和回溯法有了更深的理解