C语言中typeid关键字如何用于实现长尾类型识别?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1754个文字,预计阅读时间需要8分钟。
`typeid` 关键字+注意:`typeid` 是操作符,不是函数。这类似于 `sizeof` 类似操作。运行时获取变量类型名称,可以使用 `typeid(变量).name()`。需要注意的是,并非所有编译器都会输出 `int`、`float` 等名称。
typeid关键字
注意:typeid是操作符,不是函数。这点与sizeof类似)
运行时获知变量类型名称,可以使用 typeid(变量).name()
需要注意不是所有编译器都输出”int”、”float”等之类的名称,对于这类的编译器可以这样使用
int ia = 3; if(typeid(ia) == typeid(int)) { cout <<"int" <<endl; }
RTTI(Run-Time Type Identification)-运行时类型识别
在揭开typeid神秘面纱之前,我们先来了解一下RTTI(Run-Time Type Identification,运行时类型识别),它使程序能够获取由基指针或引用所指向的对象的实际派生类型,即允许“用指向基类的指针或引用来操作对象”的程序能够获取到“这些指针或引用所指对象”的实际派生类型。
在C++中,为了支持RTTI提供了两个操作符:dynamic_cast和typeid
- dynamic_cast允许运行时刻进行类型转换,从而使程序能够在一个类层次结构中安全地转化类型,与之相对应的还有一个非安全的转换操作符static_cast,因为这不是本文的讨论重点,所以这里不再详述,感兴趣的可以自行查阅资料。
本文共计1754个文字,预计阅读时间需要8分钟。
`typeid` 关键字+注意:`typeid` 是操作符,不是函数。这类似于 `sizeof` 类似操作。运行时获取变量类型名称,可以使用 `typeid(变量).name()`。需要注意的是,并非所有编译器都会输出 `int`、`float` 等名称。
typeid关键字
注意:typeid是操作符,不是函数。这点与sizeof类似)
运行时获知变量类型名称,可以使用 typeid(变量).name()
需要注意不是所有编译器都输出”int”、”float”等之类的名称,对于这类的编译器可以这样使用
int ia = 3; if(typeid(ia) == typeid(int)) { cout <<"int" <<endl; }
RTTI(Run-Time Type Identification)-运行时类型识别
在揭开typeid神秘面纱之前,我们先来了解一下RTTI(Run-Time Type Identification,运行时类型识别),它使程序能够获取由基指针或引用所指向的对象的实际派生类型,即允许“用指向基类的指针或引用来操作对象”的程序能够获取到“这些指针或引用所指对象”的实际派生类型。
在C++中,为了支持RTTI提供了两个操作符:dynamic_cast和typeid
- dynamic_cast允许运行时刻进行类型转换,从而使程序能够在一个类层次结构中安全地转化类型,与之相对应的还有一个非安全的转换操作符static_cast,因为这不是本文的讨论重点,所以这里不再详述,感兴趣的可以自行查阅资料。

