1、类
类:描述一类事物的属性和行为的自定义的数据类型
访问限定符:pblic修饰的成员可以在类内被访问,也可以在类外内访问
private和protected修饰的成员只能在类内被访问
对象:类这种自定义的数据类型定义的变量
类的数据类型是抽象的,对象的数据类型是 具体的实体
2、封装
C++的三大特性;封装、继承、多态
封装:把一类事物的属性和行为用类这种自定义的数据类型包起来,把需要隐藏的隐藏起来,把可以暴露的暴露出来,这就叫封装
3、This指针
This指针:指向当前类对象,谁正在调用成员函数,谁就是当前类对象
Public:成员在类内和类外都可以被访问
类内:在成员函数中可以直接被访问
类外:必须先有对象,然后通过对象进行访问不管在类内还是类外,访问成员必须要有对象,通过对象.成员或者对象指针->成员的方式进行访问
4、构造函数和构析函数
构造函数:给成员变量初始化的
谁调用的:系统自动调用(当未定义时,系统自动提供构造函数,定义时,系统不提供)
构造函数的定义:
- 函数名和类名相同
- 无返回值
- 参数不限制(构造函数可以有多个,可以重载)
构析函数:
定义:
- 函数名是~类名
- 无参
- 无返回值
- 作用:回收资源,比如在构造函数中在堆区申请空间,在析构函数里去释放
5、Static函数
在C中:
- 修饰局部变量时延长了局部变量的生命周期
- 修饰全局变量时限制了全局变量的作用域
- 修饰函数时限制了函数的作用域
在C++中:static修饰成员变量
- 必须在类内声明在类外定义(原因:static修饰的变量在编译阶段就会开辟空间,而类在编译解决没有空间,成员变量又是类的一部分,有矛盾,而声明不分配空间,定义才分配空间
- 先于对象而存在,一个类只有一份,所有对象共享,不占某个对象内存空间大小
- 在类外可以直接通过类名加作用域的方式进行访问
6、Const函数
Const修饰的成员函数
- const修饰的成员函数中不能修改任何成员变量的值
- Const看似在修饰成员函数,实则是在修饰这个成员函数的第一个形参this
- 常成员函数只能调用常成员函数
Const修饰的对象:
- 不能作为左值
- 只能调用const修饰的成员函数
- 不能修改成员变量的值
7、Mutable函数
Mutable:可变的,易变的
如果一个成员变量被mutable修饰,那么这个成员变量在const修饰的成员函数中也可以被修改
8、友元函数
打破了封装
私有的或者受保护的成员只能在类内被访问不能在类外被访问,如果确实是需要访问私有的成员,就需要留公有的接口来访问