gpt4 book ai didi

c++ - dynamic_cast的实际使用?

转载 作者:IT老高 更新时间:2023-10-28 14:01:26 24 4
gpt4 key购买 nike

我有一个关于 dynamic_cast 运算符的非常简单的问题。我知道这用于运行时类型识别,即在运行时了解对象类型。但是根据您的编程经验,您能否给出一个必须使用此运算符的真实场景?不使用有什么困难?

最佳答案

玩具示例

诺亚方舟应作为不同类型动物的容器。由于方舟本身并不关心猴子、企鹅和蚊子之间的区别,所以你定义了一个类Animal ,派生类Monkey , Penguin , 和 Mosquito从它,并将它们中的每一个存储为Animal在方舟里。

一旦洪水结束,诺亚想将动物分布在地球上它们所属的地方,因此需要更多关于储存在他方舟中的通用动物的知识。例如,他现在可以尝试 dynamic_cast<>每只动物到一个Penguin为了弄清楚哪些动物是要在南极放归的企鹅,哪些不是。

现实生活中的例子

我们实现了一个事件监控框架,应用程序将运行时生成的事件存储在一个列表中。事件监视器将遍历此列表并检查他们感兴趣的特定事件。事件类型是操作系统级别的事物,例如 SYSCALL , FUNCTIONCALL , 和 INTERRUPT .

在这里,我们将所有特定事件存储在 Event 的通用列表中。实例。然后,监视器将遍历此列表和 dynamic_cast<>他们看到的那些他们感兴趣的类型的事件。所有其他的(引发异常的)都被忽略了。

问题:为什么不能为每种事件类型单独列出一个列表?

答案:您可以这样做,但它会使使用新事件和新监视器(聚合多种事件类型)扩展系统变得更加困难,因为每个人都需要了解相应的列表以检查。

关于c++ - dynamic_cast的实际使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11759877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com