LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1359|回复: 1

static_cast<>/dynamic_cast<>/const_cast<&am

[复制链接]
发表于 2006-2-8 10:20:25 | 显示全部楼层 |阅读模式

  1. Connection::Gateway rgateway =
  2.                         static_cast<Connection::Gateway> (gateway);
复制代码

这里的gateway是该代码段所在函数的一个实参,能讲解一下这里的:static_cast<>的作用,与此相关的还有:dynamic_cast<>/reinterpret_cast<>/const_cast<>不知道此乃何用也?
发表于 2006-2-8 11:06:36 | 显示全部楼层
static_cast<T>(x)相当于老方法(T)x。两者是等价的。但因为在C++中对const的处理不同,static_cast<T>(x)无法去掉const,即不能从const T转成T。

dynamic_cast<T>(x)引入了运行时的类型检查,属于RTTI应用。在运行期要检查类型转换是否合法,若不合法会抛出异常bad_cast。多用于继承类指针类型向基类指针类型的类型转换。但相比static_cast<T>(x)引入了运行时的开销。

reinterpret_cast<T>(x)是implementation defined,因此无法确定它的行为……

const_cast<T>(x)便是为了从const T到T的类型转换。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表