C++类型转换:使用显式转换的好处?

tib*_*boo 5 c++ casting

在c ++中使用这些运算符而不是隐式转换有什么好处?

dynamic_cast <new_type> (expression)
reinterpret_cast <new_type> (expression)
static_cast <new_type> (expression) 
Run Code Online (Sandbox Code Playgroud)

为什么,在哪里,我们应该在哪种情况下使用它们?它们在OOP中很少使用是真的吗?

Jan*_*net 7

从您提供的强制转换列表中,唯一有意义用于构建隐式强制转换的是static_cast.

dynamic_cast用于将超类向下转换为其子类.这不可能隐式发生,实际上在OOP中并不罕见.static_cast也可以在这样的演员阵容中使用,但是它更危险,因为它不会在运行时检查向下转换是否有效.

最后一次演员,reinterpret_cast,应该非常小心地使用,因为它是最危险的.你基本上可以将任何内容转换成任何内容 - 但是你作为程序员必须确保这样的转换在语义上有意义,因为你实际上通过执行这样的转换来关闭类型检查.