问题:普通类型与类类型之间能否进行类型转换?
类类型之间能否进行类型转换?
一、普通类型转换为类类型
再论构造函数
1、构造函数可以定义不同类型的参数
2、参数满足下列条件时称为转换构造函数
1、有且只有一个参数
2、参数是基本类型
3、参数是其他类类型
当我们写下
编译器的行为是:
编译器尽力尝试的结果是隐式类型转换,隐式类型转换会让程序以意想不到的方式工作,是工程中bug的来源。
工程中通过 explicit 关键字杜绝编译器的转换尝试,转换构造函数被 explicit 修饰时只能进行显示转换。
转换方式:
1、Class_Object = static_cast<ClassName>(value)
2、ClassName(value)
3、(ClassName)value(不推荐)
首先会将4.4转换为SmallInt类型,再调用SmallInt::operator = 函数。我们直接打印si是错误的,因为si是一个SmallInt类的对象,需要调用成员函数来获得成员变量值。