您的位置:首页 > 其它

static_cast, dynamic_cast, const_cast, reinterpret_cast的简单介绍

2015-03-24 22:06 302 查看
       在C++中, 我们有新的强制转换机制, 为什么要这么搞呢? 因为这些关键字非常显眼, 而且一旦出了问题, 可以方便查阅code.  我们今天暂时不说dynamic_cast, 仅仅感知一下其余的三个:

int main()
{
// 普通转换, 只能用static_cast
int i = 0;
double d = static_cast<int>(i);

// 转换回来, 其实此处也可以用 reinterpret_cast
void *p1 = &i;
int *p2 = static_cast<int *>(&i);

// 去常转换, 只能用const_cast
const char *q = "abc";
char *p3 = const_cast<char *>(q);

// 重解释, 只能用reinterpret_cast
int n = 0;
double *pd = reinterpret_cast<double *>(&n);

return 0;
}
       一定要慎用, 这些转换很容易产生非程序猿预期的结果, 尤其是reinterpret_cast.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐