【发布时间】:2011-03-17 17:54:17
【问题描述】:
可能重复:
When should static_cast, dynamic_cast and reinterpret_cast be used?
直到几天前,我一直在 C++ 中使用 C 风格的类型转换,因为它似乎工作得很好。我最近发现在 C++ 中使用 C 非常糟糕..
我以前从未真正使用过 C++ 强制转换,所以我想知道是否有人可以告诉我(最好用他们自己的话)static_cast、reinterpret_cast 和 const_cast 之间的区别是什么?
我知道 const_cast 从某事中删除了一个“const”,但我不确定它们之间的区别是什么,以及我需要在不同情况下使用哪个。
【问题讨论】:
-
你可能应该得到一本好书并正确地学习 C++。 :) stackoverflow.com/questions/388242/… 这里有一个很好的总结:stackoverflow.com/questions/28002/…
-
这不是“非常糟糕”,它很危险,需要一些小心,并且存在维护缺陷。实际上,与使用原始指针相同。在 C 中你没有更好的选择,但 C++ 为你提供了表达你的意思的工具,让编译器产生更好的警告和错误。