在 C++ 中使用这些运算符而不是隐式转换有什么好处?
dynamic_cast <new_type> (expression)
reinterpret_cast <new_type> (expression)
static_cast <new_type> (expression)
为什么、在哪里、在什么情况下我们应该使用它们?在 OOP 中很少使用它们是真的吗?
最佳答案
从您提供的转换列表中,唯一可以用来替代隐式转换的是 static_cast。
dynamic_cast 用于将父类(super class)向下转换为其子类。这不可能隐式发生,实际上在 OOP 中并不罕见。 static_cast 也可以用在这样的转换中,但是它更危险,因为它不会在运行时检查向下转换是否有效。
最后一个转换,reinterpret_cast,应该非常小心地使用,因为它是所有转换中最危险的。你基本上可以用它把任何东西转换成任何东西——但作为程序员,你必须确保这种转换在语义上是有意义的,因为你实际上通过这种转换关闭了类型检查。
关于C++ 类型转换 : benefit of using explicit casts?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3107924/