gpt4 book ai didi

c++ - dynamic_cast 被引入 C++ 以破坏多态性?

转载 作者:太空狗 更新时间:2023-10-29 23:13:22 25 4
gpt4 key购买 nike

<分区>

B. Stroustrup 最初将 C++ 设计为没有 dynamic_cast,但后来人们不得不将这种类型转换添加到语言中。无论我在哪里遇到 dynamic_cast 的用法,它都反对对象的多态使用。所以有时您更愿意知道对象类型,而不是尝试重新设计代码以利用多态性?那些是什么情况?你能举出一个例子吗?

附言请考虑 dynamic_cast 将大量 RTTI 信息添加到代码中,这是添加到语言中的部分反射,因为类层次结构信息存储在编译代码中。这违背了 C++ 哲学——你为你使用的东西付费。 (我知道您可以关闭 RTTI,但默认情况下它是打开的,您可能一次都不需要在整个代码中使用它!)

编辑:根据@Griwes 的评论,RTTI 的转向是可能的,但这是未定义的行为。因此,上述与 C++ 哲学相关的结论变得更加有力。

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