static_cast运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。
①用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。
进行上行转换(把派生类的指针或引用转换成基类表示)是安全的;
进行下行转换(把基类指针或引用转换成派生类表示)时,由于没有动态类型检查,所以是不安全的。
来自:http://baike.baidu.com/link?u...
我想问下,加粗部分,它说的是什么意思?不安全指的是什么?
static_cast运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。
①用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。
进行上行转换(把派生类的指针或引用转换成基类表示)是安全的;
进行下行转换(把基类指针或引用转换成派生类表示)时,由于没有动态类型检查,所以是不安全的。
来自:http://baike.baidu.com/link?u...
我想问下,加粗部分,它说的是什么意思?不安全指的是什么?
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.5k 阅读
3 回答475 阅读✓ 已解决
比如说有一个父类
A
,派生出两个子类B
和C
,有一个A
类指针或引用a
指向了一个B
类对象b,此时用static_cast
进行下行转换,可以将其转换成C
类的对象(指针或引用),此时就会出现不安全,因为C
类的一些成员函数/变量对B
类的对象不适用。简单来说,就是可以利用
static_cast
在同一父类的不同子类的对象之间互转,导致型别的错误。举个例子: