构造函数作用
- 在对象被创建时使用特定的值构造对象,把对象初始化为一个特定的初始状态
构造函数形式
- 函数名与类名相同
- 不能定义返回值类型 不能有return语句
- 可以有形参也可没有
- 可以为内联函数
- 可以重载
- 可以带默认参数值
调用时机
- 在对象创建时被自动调用
- 默认构造函数:调用时可以不需要实参的构造函数 不能同时出现在一个类中
- 若未定义构造函数 编译器将自动生成一个默认构造函数:
1.参数列表为空 不为数据成员设置初始值
2.基本类型的数据默认初始化的值不确定 - “=default”
-若程序中已定义构造函数 则不再隐含生成默认构造函数
若依然希望生成默认构造函数,可以用 =default
委托构造函数
- 委托构造函数使用类的其他构造函数执行初始化过程
- 可保证代码一致性 只要在一处修改 其他委托构造函数一并修改
复制构造函数
形参为本类的对象引用,用一个已存在对向来初始化同类·新对象
- 用const常引用读取其中数据 但不可对象修改 可保证实参安全性
“=delete”
不希望对象被复制构造:编译器不生成默认复制构造函数
析构函数
做善后工作 完成对象被删除前的一些清理工作
在对象的生存期结束时系统自动调用
若未声明 则编译器自动生成 其函数体为空
类的组合
类中成员是另一个类的对象 可在已有抽象基础上实现更复杂的抽象
类组合的构造函数设计
不仅要初始化本类中基本类型成员数据,也要初始化对象成员
声明形式:
类名::类名(对象成员所需的形参,本类成员形参):
对象1(参数),对象2(参数),…
初始化次序:先是构造函数初始化列表中列出的成员 次序是成员在类体中的次序
成员对象调用函数顺序:定义顺序
前向引用声明
- 类应先声明后引用
- 若需在声明前引用,则应进行前向引用声明(它只为程序引入一个标识符,具体声明\类体在其他地方)
- 注意:只能用被声明符号,不能涉及细节
UML简介
三个基本
-事物
-关系
-图
结构体
是一种特殊形态的类
定义主要用来保存数据 没有什么操作的类型
初始化
若
- 全部数据成员都为公共
- 没有用户定义的构造函数
- 没有基类和虚函数
则可这么初始化:
类型名 变量名={成员数据1初值,成员数据2初值,…};
联合体
目的:共用存储空间
union 联合体名称{
公有成员
protected:
保护型成员
private:
私有成员
};
枚举类定义
语法:enum class 枚举类型名:底层类型{枚举值列表};
好处:
强作用域:将作用域限制在枚举类中 避免重名
转换限制:枚举类对象不可以与整形隐式的互相转换
可指定底层类型