一·,初始化列表
初始化列表:以一个冒号开始,接着是一个逗号分割数据成员列表,每一个成员变量后面跟一个括号,括号内放初始值或表达式。
注意:每一个成员变量在初始化列表只能出现一次(初始化只能初始化一次)
有以下成员必须放在初始化列表位置(引用成员变量,const修饰成员变量,自定义类型变量)
尽量使用初始化列表,因为不管你是否使用初始化列表,对于自定义类型成员变量,一定会先使用初始化列表。
成员变量在类中声明次序就是在初始化列表中的初始化顺序,与其在初始化列表中的顺序无关
二,explicit关键字
构造函数不仅可以构造和初始化对象,对于接收单个参数的构造函数,还具有类型转换作用。
✿构造函数只有一个参数。
✿构造函数有多个参数,除第一个参数没有默认值外,其余参数都有默认值
✿全缺省构造函数
三,static成员
声明static的类成员称为类的静态成员,static修饰的成员变量,称为静态成员变量;修饰的函数称为静态成员函数(静态成员变量一定要在类外进行初始化)
eg:计算程序中创建了多少个类对象
特性:
✿静态成员变量为所有类对象所共享,不属于某个具体的对象,放在静态区
✿静态成员变量必须类外定义了,定义时不需要添加static,类中只是声明
✿静态成员使用时,类名::静态成员 或者 对象.静态成员 访问
✿静态成员函数没有this指针,不能访问任何非静态成员
✿静态成员也是类成员,受访问限定符的限定
四,友元
友元:函数友元 和 友元类。
(1)友元函数
友元函数可以直接访问类的私有成员,它是定义在类外部的普通函数,不属于任何类,但是需要在类内部声明,声明需要加 friend 的关键字。
说明:✿友元函数可以直接访问类的私有和保护成员,但不是类的成员函数。
✿友元不可以用const修饰
✿友元函数可以在类的任何地方声明,不受类访问限定符限制。
✿一个类可以有多个友元,调用与普通的函数一样
(2)友元类
五,内部类
![](https://img-blog.csdnimg.cn/direct/c41102e46a59497fa72dd86c5f54ad19.png)