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

来源:互联网 发布:天津医科大学考研知乎 编辑:程序博客网 时间:2024/05/19 21:58

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

int main(){// 普通转换, 只能用static_castint i = 0;double d = static_cast<int>(i);// 转换回来, 其实此处也可以用 reinterpret_castvoid *p1 = &i;int *p2 = static_cast<int *>(&i);// 去常转换, 只能用const_castconst char *q = "abc";char *p3 = const_cast<char *>(q);// 重解释, 只能用reinterpret_castint n = 0;double *pd = reinterpret_cast<double *>(&n);return 0;}
       一定要慎用, 这些转换很容易产生非程序猿预期的结果, 尤其是reinterpret_cast.

0 0
原创粉丝点击