在c ++中使用这些运算符而不是隐式转换有什么好处?
dynamic_cast <new_type> (expression)
reinterpret_cast <new_type> (expression)
static_cast <new_type> (expression)
Run Code Online (Sandbox Code Playgroud)
为什么,在哪里,我们应该在哪种情况下使用它们?它们在OOP中很少使用是真的吗?
从您提供的强制转换列表中,唯一有意义用于构建隐式强制转换的是static_cast.
dynamic_cast用于将超类向下转换为其子类.这不可能隐式发生,实际上在OOP中并不罕见.static_cast也可以在这样的演员阵容中使用,但是它更危险,因为它不会在运行时检查向下转换是否有效.
最后一次演员,reinterpret_cast,应该非常小心地使用,因为它是最危险的.你基本上可以将任何内容转换成任何内容 - 但是你作为程序员必须确保这样的转换在语义上有意义,因为你实际上通过执行这样的转换来关闭类型检查.
| 归档时间: |
|
| 查看次数: |
873 次 |
| 最近记录: |