语法:
- 初始化列表完成的是对类"成员变量"初始化工作,而构造函数函数体中是赋值操作
- 成员变量在初始化列表中只能出现一次,真正的初始化次序是按照成员变量在类中声明的次序进行初始化
- 尽量避免使用成员来初始化成员
- 必须在初始化列表位置初始化的成员
- const类型的成员
- 引用类型的成员
- 类类型对象(并且类类型对象具有无参的构造函数&&没有无参和全缺省的构造函数)
注意:
- 初始化列表是构造函数的特性
- 用户没有显式给出时,初始化列表仍旧存在,只不过编译器会对成员变量进行默认的初始化(用户没有显式给出时,相当于编译器自动将初始化列表添加出来)
- 内置类型成成员变量: 编译器会将其初始化为随机值
- 类类型对象: 编译器会调用对应类的无参构造函数或者缺省的构造函数来初始化该成员如果该类没有无参或者全缺省的构造函数,则编译器会报错: 类没有默认构造函数错误
假设类A中包含有类B的对象,并且类B具有带有参数的构造函数,没有无参或者全缺省的构造函数,则类A中包含的类B的对象一定要在A类构造函数初始化类表的位置完成初始化
static修饰类成员:
- C语言:
- 变量:
- static修饰全局变量
- static修饰局部变量
- 函数:
- 改变函数链接属性
- 表明:该函数只能在当前文件中进行使用
- 变量:
- C++:
- 变量:
- static修饰全局变量
- static修饰局部变量
- static修饰成员变量
- 总结: static成员变量与普通类型成员变量的区别:
- 是类的属性,不属于某个具体的对象,是所有类对象共享的成员变量
- 静态成员变量不会影响sizeof的大小
- 静态成员变量在类中只是声明,需要再类外来进行定义
- 调用方式
- 对象.静态成员变量名字
- 类名::静态成员变量名字
- 静态成员变量不能再构造函数初始化列表的位置来进行初始化(因为: 初始化列表中只能初始化对象中包含的类成员变量)
- 静态成员变量也是类成员变量,会受到访问限定符的限制
- 变量: