c++ - C++显式转换真的那么糟糕吗?

标签 c++ casting

此时我对 C++ 的了解比其他任何知识都更学术。在我迄今为止的所有阅读中,显式转换与命名转换的使用(const_caststatic_castreinterpret_castdynamic_cast) 带有一个很大的警告标签(很容易看出原因),暗示显式转换是不良设计的症状,只能在绝望的情况下作为最后的手段使用。所以,我不得不问:

使用命名强制转换的显式转换真的只是陪审团操纵代码,还是对此功能有更优雅和积极的应用?后者有一个很好的例子吗?

最佳答案

有些情况下您离不开它。喜欢this one .问题是你有多重继承,需要将 this 指针转换为 void*,同时确保进入 void* 的指针将仍然指向当前对象的右子对象。使用显式强制转换是实现这一目标的唯一方法。

有一种观点认为,如果你不能没有类型转换,那么你的设计就很糟糕。我不能完全同意这一点 - 可能有不同的情况,包括上面提到的一种情况,但也许如果您需要经常使用显式强制转换,那么您的设计确实很糟糕。

关于c++ - C++显式转换真的那么糟糕吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3045602/

相关文章:

java - Java中三元运算符中的char转换,打印int值而不是char值

PHP 自定义对象转换

casting - typescript :在评论中设置变量类型

C++11内存模型: why can't compiler move statements across load() operations during optimization?

c++ - 是否存在 x + 1 == x 类型的 float 值 x?

c# - 将对象转换为 List<T> 以便能够使用扩展方法

java - 子类的对象不能调用自己的方法

c++ - 有没有类似静态 thread_local 方法的东西?

c++ - 为任务管理器封装成员函数指针的好方法

c++ - Eclipse C++ 构建问题