gpt4 book ai didi

c++ - 相等的 type_info 地址是否意味着相等的类型?

转载 作者:搜寻专家 更新时间:2023-10-31 01:56:29 26 4
gpt4 key购买 nike

我正在微优化 code for identifying object types .我假设我可以使用以下方法检查在同一模块中实例化的两个对象是否具有相同的类型:

SomeCommonBase& first = ...;
SomeCommonBase& second = ...;
const type_info& firstInfo = typeid( first );
const type_info& secondInfo = typeid( second );

if( &firstInfo == &secondInfo || firstInfo == secondInfo ) {
//identical types
} else {
//different types
}

逻辑是,一旦返回一个type_info 引用,该引用后面的对象就保证为live until the module is unloaded。 .因此,一旦返回引用,其他对象就不能占用相同的地址。

因此,如果地址匹配,那么它们就是相同的 type_info 对象和相同的数据类型。如果实现为同一类型返回不同的 type_info 对象,则调用 type_info::operator== 并进行额外检查。

这是一个正确的假设吗?

最佳答案

显然。

相等的地址意味着两个指针指向内存中的同一个对象。如果指针是 type_info* 类型,那么显然它意味着传递给 的对象(即 firstsecond 在你的例子中) typeid() 是同一类型。毕竟,具有相同地址的两个指针怎么可能引用不同的 type_info 对象,从而变成不同的类型呢?

关于c++ - 相等的 type_info 地址是否意味着相等的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7025840/

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