gpt4 book ai didi

c++ - 为什么 C++ 不使用集中存储类型信息来实现高效的 RTTI?

转载 作者:行者123 更新时间:2023-11-28 04:48:58 26 4
gpt4 key购买 nike

据我所知,C++ 中的每个多态类都包含一个带有错位类型名称的字符串。而RTTI是通过字符串比较实现的。

这是真的吗?相反,实现集中式存储会更有效吗?

通过集中式类型存储,每个对象都可以保存一个指向类型信息的指针。动态转换可以简单地通过指针比较来实现。

最佳答案

实际实现甚至比每个对象一个指针更有效。

标准禁止向“标准布局”类添加任何数据,因此连指针都没有空间,更不用说字符串了。对于多态类,会有额外的元数据,但在实际实现中,所有特定于对象动态类型的数据都存储在一起,只需要一个指针即可。

因此,由于多态对象已经需要一个指向虚函数调度表的指针,因此存储类型名称的每个对象增量成本为零。 v 表中仅在函数指针旁边存储了一个额外的指针,因此无论存在多少个实例,每个多态类型的成本都是一个指针。

关于c++ - 为什么 C++ 不使用集中存储类型信息来实现高效的 RTTI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48604284/

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