任何人都可以给我一个真实世界的例子,说明当需要dynamic_cast并且根本无法解决时?我能想到的例子通常可以解决双重调度问题.
如果约束太强,那么一般来说,dynamic_cast的示例也很好.
我希望看到真实的例子,而不是"它通常用于在类型树之间向上和向下转换".
双重调度要求相互作用的类型对彼此的内部有深入的了解,因为它需要在另一个类上调用一个类.dynamic_cast当你无法修改一个类的内部,或者不希望打破所讨论的类的封装时,它就可以工作.
也就是说,双重调度对所涉及的类是侵入性的,而在dynamic_cast不知道类中的强制转换的情况下工作.
您也可以使用dynamic_cast,如果你不知道将要调用的目标方法重载.举个例子,看看我昨天发布的这个问题.
基类Shape必须知道所有派生类,从而产生循环依赖.如果从Shape派生一个新类(比如Triangle),则必须更新Shape的接口和所有其他派生类的接口/实现.在某些情况下,这甚至不是一个选项:您可能没有Shape的源代码,或者不愿意或允许修改它.
| 归档时间: |
|
| 查看次数: |
3755 次 |
| 最近记录: |