C++类型转换

1.C语言强制类型转换,Type b = (Type)a,这种不安全,转换前没有类型检查。例如:

char *pChar = new char;
   int *pInt =  (int *)pChar;

这种是从小的地址(char *)转换为大的地址(int *),虽然可以编译过,但是有可能访问不安全的地址。

2.C++提供了四种类型转换,分别适用于其他场景

(1)static_cast : 用于一般的数据类型转换,和具有继承关系的指针或引用。

(2)dynamic_cast : 只能转换具有继承关系的指针或引用,但是当转换继承关系的指针时,只能由子类指针转换为父类指针,也就是大地址转换为小地址,否则地址越界。