c++中typeid的用法详解
时间: 2023-12-01 16:03:08 浏览: 184
typeinfo是C++内置类型信息库,在程序运行时动态获取对象或类型的信息。typeinfo 主要包含 type_info 类型以及 3 个运算符:typeid、dynamic_cast 与 typeid。typeid 运算符用于获取一个类型或一个表达式的类型信息,返回值是一个 const std::type_info & 类型的引用。具体用法可以参考C++标准库相关文档。
相关问题
typeid类详解并举例
typeid
是 C++ 标准库中的一个类型信息运算符,用于获取编译器内部对类型的信息描述。这个运算符返回一个 std::type_info
对象,该对象包含关于特定类型的名称、大小、成员等信息,但主要用于运行时类型识别(RTTI)而不是直接操作。
typeid
的用法通常如下:
std::type_info ti = typeid(object);
这里 object
可以是任何类型的实例,ti
将存储关于 object
类型的信息。例如,你可以使用 ==
操作符比较两个 type_info
是否代表相同的类型:
if (typeid(myObject).name() == typeid(yourObject).name()) {
// myObject 和 yourObject 实际上是同一个类型
}
值得注意的是,typeid
主要应用于动态类型检查(dynamic typing),比如单元测试或调试工具,因为 C++ 编译期没有类型信息可用。另外,typeid
不适用于模板和继承链复杂的情况,因为它不能处理模板特化后的类型。
举个例子:
class MyClass {};
class MyDerivedClass : public MyClass {};
int main() {
std::type_info tiMyClass = typeid(MyClass);
std::type_info tiMyDerivedClass = typeid(MyDerivedClass);
if (tiMyClass != tiMyDerivedClass) {
std::cout << "MyClass and MyDerivedClass are different types.\n";
} else {
std::cout << "MyClass and MyDerivedClass are the same type.\n";
}
return 0;
}
在这个例子中,如果 MyClass
和 MyDerivedClass
是不同的类型,那么输出将是 "MyClass and MyDerivedClass are different types."。
相关推荐
















