C++ typeid操作符

ypeid操作符用于判断表达式的类型,注意它和sizeof一样是一个操作符而不是函数。如果需要使用typeid操作符,最好加上typeinfo头文件。
免费会员网优酷账号

时间: 2024-11-05 13:29:34

C++ typeid操作符的相关文章

typeid详解

在揭开typeid神秘面纱之前,我们先来了解一下RTTI(Run-Time Type Identification,运行时类型识别),它使程序能够获取由基指针或引用所指向的对象的实际派生类型,即允许“用指向基类的指针或引用来操作对象”的程序能够获取到“这些指针或引用所指对象”的实际派生类型.在C++中,为了支持RTTI提供了两个操作符:dynamic_cast和 typeid. dynamic_cast允许运行时刻进行类型转换,从而使程序能够在一个类层次结构中安全地转化类型,与之相对应的还有一个

C++ typeid实现原理

最近看了boost::any类源码,其实现主要依赖typeid操作符.很好奇这样实现的时间和空间开销有多大,决定探一下究竟. VS2008附带的type_info类只有头文件,没有源文件,声明如下: [cpp] view plaincopy class type_info { public: virtual ~type_info(); _CRTIMP_PURE bool __CLR_OR_THIS_CALL operator==(const type_info& rhs) const; _CRT

使用typeid(变量或类型).name()来获取常量或变量的类型---gyy整理

使用typeid(变量或类型).name()来获取常量或变量的类型 <typeinfo>  该头文件包含运行时类型识别(在执行时确定数据类型)的类 typeid的使用   typeid操作符        typeid表达式形如:      typeid(expr): 这里expr是任意表达式或者类型名.如果表达式的类型是类类型且至少包含有一个虚函数,则typeid操作符返回表达式的动态类型,需要在运行时计算:否则,typeid操作符返回表达式的静态类型,在编译时就可以计算. typeid操作

C++ 标准库之typeid

本文只讲述typeid这个操作符,呃  ,它确实是一个操作符,类似于 sizeof 操作符. 在将该操作符之前,不得不提的是RTTI(Run-Time Type Identification,运行时类型识别),其实就是说 在运行期得到对象的实际的类型.这立刻使我们想到了"可以通过基类的指针和引用可以指向实际的派生类型". 啊哦,答对了,这就是typeid这个强大操作符所做的事. 既然提到了typeid,那么该操作符的返回类型便不得不提,该操作符的返回类型是type_info的标准库类型

C++中获取数据类型typeid

有时候,为了达到某种目的,我们需要获取数据类型,这个类型无论是内置类型还是自定义类型,包括类类型:  在揭开typeid神秘面纱之前,我们先来了解一下RTTI(Run-Time Type Identification,运行时类型识别),它使程序能够获取由基指针或引用所指向的对象的实际派生类型,即允许"用指向基类的指针或引用来操作对象"的程序能够获取到"这些指针或引用所指对象"的实际派生类型.在C++中,为了支持RTTI提供了两个操作符:dynamic_cast和ty

RTTI,C++类型转换操作符

body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; border-width: 2px 0 2px 0;} th{border: 1px solid gray; padding: 4px; background-color: #DDD;} td{border: 1px solid gray; padding: 4px;} tr:nth-child(

c++ 动态判断基类指针指向的子类类型(typeid)

我们在程序中定义了一个基类,该基类有n个子类,为了方便,我们经常定义一个基类的指针数组,数组中的每一项指向都指向一个子类,那么在程序中我们如何判断这些基类指针是指向哪个子类呢? 本文提供了两种方法 (1) 自定义类id, (2)typeid 一.自定义id 如下所示基类father有两个子类son1 和 son2,我们在基类中定义类虚函数id,子类中分别重载了该函数,各个子类返回值都不同 1 class father 2 { 3 public: 4 virtual void fun() 5 {

C++ typeid动态判断基类指针指向的子类类型

typeid是c++的关键字,typeid操作符的返回结果是名为type_info的标准库类型的对象的引用(在头文件typeinfo中定义) ISO C++标准并没有确切定义type_info,它的确切定义编译器相关的,但是标准却规定了其实现必需提供如下四种操作: type_info类提供了public虚 析构函数,以使用户能够用其作为基类.它的默认构造函数和拷贝构造函数及赋值操作符都定义为private,所以不能定义或复制type_info类型的对象. 程序中创建type_info对象的唯一方

c++中RTTI

RTTI 是"Runtime Type Information"的缩写,意思是:运行时类型信息.它提供了运行时确定对象类型的方法.本文将简略介绍 RTTI 的一些背景知识.描述 RTTI 的概念,并通过具体例子和代码介绍什么时候使用以及如何使用 RTTI:本文还将详细描述两个重要的 RTTI 运算符的使用方法,它们是 typeid 和 dynamic_cast.如何确定对象的动态类型呢?答案是使用内建的 RTTI 中的运算符:typeid 和 dynamic_cast. typeid的