读书人

指针类型转换怎么正规书写

发布时间: 2014-01-01 18:12:08 作者: rapoo

指针类型转换如何正规书写?

dynamic_cast<B *>(p1)与static_cast<B *>(p1)转换有什么区别?语句(B *)(p1)与哪个等效呢?

[解决办法]
(B *)(p1) 与 static_cast<B *>(p1) 等效

用于一般的内型转换,是否能转换 编译时候就能确定

dynamic_cast<B *>(p1) 用于继承类之间的转换,
比如类型为基类的指针(实际可以是指向基类 或者继承类) 强转为 继承类指针。

因为编译的时候不知道该基类指针是否指向继承类, 能否转换由运行时候决定。
当 指向的是继承类的时候, 它可以转换 继承类指针
如果指向 基类, 就不能转换。

[解决办法]
dynamic_cast用于将基类指针类型转换为派生类指针类型,前提是该对象的确包含派生类对象,这个转换是相对慢点的,因为会去校验转换是否合法。

static_cast和C风格的转换基本一致。

读书人网 >C++

热点推荐