外观
12.类型转换函数
约 906 字大约 3 分钟
类型转换C++编程语言个人
2022-06-16
四十一、类型转换函数(上)
1、再论类型转换
- 标准数据类型之间会进行隐式的类型安全转换
- 转换规则如下:

2、实例分析:有趣的隐式类型转换
避免编译器的隐式类型转换,确保两个类型一致


3、问题
普通类型与类类型之间能否进行类型转换?
类类型之间能否进行类型转换?
4、编程实验:普通类型 → 类类型

5、再论构造函数
- 构造函数可以定义不同类型的参数
- 参数满足下列条件时称为转换构造函数
- 有且仅有一个参数
- 参数是基本类型
- 参数是其它类类型
6、另一个视角
旧式的C方式强制类型转换

7、编译器的行为
- 编译器会尽力尝试让源码通过编译

编译器尽力尝试的结果是隐式类型转换
隐式类型转换
- 会让程序以意想不到的方式进行工作
- 是工程中bug的重要来源
工程中通过explicit 关键字杜绝编译器的转换尝试
转换构造函数被explicit修饰时只能进行显示转换
- 转换方式

8、小结
- 转换构造函数只有一个参数
- 转换构造函数的参数类型是其它类型
- 转换构造函数在类型转换时被调用
- 隐式类型转换是工程中bug的重要来源
- explicit关键字用于杜绝隐式类型转换
四十二、类型转换函数(下)
1、问题:类类型是否能够类型转换到普通类型?
可以
2、类型转换函数
- C++类中可以定义类型转换函数
- 类型转换函数用于将类对象转换为其它类型
- 语法规则:

3、编程实验:类型转换函数初探

4、类型转换函数
- 与转换构造函数具有同等的地位
- 使得编译器有能力将对象转化为其它类型
- 编译器能够隐式的使用类型转换函数
5、编译器会尽力尝试上源码通过编译

6、类型转换函数
类类型之间的相互转换? !
类型转换函数 VS 转换构造函数
7、编程实验:类类型之间的转换

8、类型转换函数
- 无法抑制隐式的类型转换函数调用
- 类型转换函数可能与转换构造函数冲突
- 工程中以Type toType()的公有成员代替类型转换函数

9、小结
- C++类中可以定义类型转换函数
- 类型转换函数用于将类对象转换为其它类型
- 类型转换函数与转换构造函数具有同等的地位
- 工程中以Type toType()的公有成员代替类型转换函数
