先看如下代码
char a = 'a';
double d = a;
很明显以上代码无法编译通过,因为a 和 d 是不同的数据类型,如果我们确实有需求将a赋值给d,这时应该怎么做呢?
这就需要用到类型转换,就是将 a 的数据类型 转化为 double 类型,那么如何来转呢?
很简单,只需要用C++内置函数static_cast()就可以了,具体示例代码如下
char a = 'a';
double d = static_cast<double>(a);
这里说明下,static_cast ()中的a ,表示要将a转化为<>中的double类型。()中的参数表示待转化类型,<>中的类型,表示要转化为什么样的类型。
由static_cast()进行的转化叫做静态类型转换。
除了基本的数据类型转化之外,还有父类和子类之间的类型转换,示例如下
我先定义一个父类
class Base{};
再定义个子类
class Child :public Base{};
现在就来进行父类和子类的类型转换
向下类型转换(将父类转化为子类)
Base * base = NULL;
Child * child = NULL;
//把base转为 Child*类型 向下 不安全
Child * child2 = static_cast<Child*>(base);
向上类型转换(将子类转化为父类)
Base * base = NULL;
Child * child = NULL;
//把child 转为 Base* 向上 安全
Base * base2 = static_cast<Base*>(child);