C++静态类型转换

先看如下代码

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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值