此时我对 C++ 的了解比其他任何知识都更学术。在我迄今为止的所有阅读中,显式转换与命名转换的使用(const_cast
、static_cast
、reinterpret_cast
、dynamic_cast
) 带有一个很大的警告标签(很容易看出原因),暗示显式转换是不良设计的症状,只能在绝望的情况下作为最后的手段使用。所以,我不得不问:
使用命名强制转换的显式转换真的只是陪审团操纵代码,还是对此功能有更优雅和积极的应用?后者有一个很好的例子吗?
最佳答案
有些情况下您离不开它。喜欢this one .问题是你有多重继承,需要将 this
指针转换为 void*
,同时确保进入 void*
的指针将仍然指向当前对象的右子对象。使用显式强制转换是实现这一目标的唯一方法。
有一种观点认为,如果你不能没有类型转换,那么你的设计就很糟糕。我不能完全同意这一点 - 可能有不同的情况,包括上面提到的一种情况,但也许如果您需要经常使用显式强制转换,那么您的设计确实很糟糕。
关于c++ - C++显式转换真的那么糟糕吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3045602/