上行转换:小类型转大类型(子类转换为父类)一定是安全的
下行转换:大类型转小类型(父类转换为子类)
C风格的转换格式简单,但是在转换过程中会出现问题,当下行转换过程中会丢失父类的属性。
C风格的类型转换 | (Type) Expression |
C++为了克服这些缺点引入了4种不同类型的转换操作符
static_cast | 静态类型转换 |
reinterpreter_cas | 重新解释类型转换。 |
dynamic_cast | 子类和父类之间的多态类型转换。 |
const_cast | 去掉const属性转换 |
1.static_cast 静态类型转换:
▲static_cast<目标类型>(要转换的参数)
静态类型转换父类转换为子类不安全。
#include <iostream>
using namespace std;
int main(void)
{
double dPi = 3.1415926;
int num1 = (int)dPi; //c语言的旧式类型转换
int num2 = dPi; //隐式类型转换
// 静态的类型转换:
// 在编译的时 进⾏行基本类型的转换 能替代c⻛风格的类型转换 可以进⾏行⼀一部分检查
int num3 = static_cast<int> (dPi); //c++的新式的类型转换运算符
cout << "num1:" << num1 << " num2:" << num2 << " num3:" << num3 << endl;
return 0;
}
2.dynamic_cast子类和父类之间的多态
▲dynamic_cast<目标类型>(要转换的参数)
用于子类与父类之间的转换
未写完!!!!!!!!!!