隐式类型转换
可以用单个实参来调用的构造函数定义了从形参类型到该类型的一个隐式转换。首先要单个实参,你可以把构造函数colour的默认实参去掉,也就是定义一个对象必须要两个参数的时候,文件编译不能通过。然后满足这个条件后,系统就知道怎么转换了
要注意的是:只存在一个用户定义的类型转换,但存在多个算术类型转换。
int* ----> void* 隐式类型转换
void* ---> int* 不能隐式类型转换
基础数据类型之间都可以进行隐式类型转换
C++四种显示类型转换
1.静态类型转换
static_cast<目标类型>(源对象)
用于数值之间的转化, 可以在相关指针在void* 之间转换
在基类和派生类之间进行转换(必须是有继承关系的两个类之间
注意:
1.基本类型能转换 但是不能转换指针类型
2.C语言中能隐式类型转换的,在c++中可用 static_cast<>()进行类型转换。
因C++编译器在编译检查一般都能通过;
3.如果目标类型和源对象类型在某一个方向上可以进行隐式类型转换,
那么在两个方向上都可以进行静态类型转换;
反之,如果在两个方向上都不能进行隐式类型转换,
则任意一个方向上都不能进行静态类型转换
#include <iostream>
using namespace std;
int main(){
int x = 111;
double d = 3.14;
double ox = static_cast<double>(x);
int od = static_cast<int>