4.8 C++ typeid操作符】的更多相关文章

参考:http://www.weixueyuan.net/view/6378.html 总结: typeid操作符用于判断表达式的类型,注意它和sizeof一样是一个操作符而不是函数. 如果需要使用typeid操作符,最好加上typeinfo头文件. 操作符typeid返回的是一个type_info类(用于描述数据类型的一个系统类)对象的引用.这个操作符可以用于表达式和类型名(包括自定的数据类型,比如类). typeid操作符用于判断表达式的类型,注意它和sizeof一样是一个操作符而不是函数.…
typeid() operator返回type_info,返回值不可拷贝.不可赋值 // Illustrates the typeid operator. #include <iostream> #include <typeinfo> using namespace std; struct PolyBase { virtual ~PolyBase() {} }; struct PolyDer : PolyBase { PolyDer() {} }; struct NonPolyBa…
(http://www.cppblog.com/smagle/archive/2010/05/14/115286.html) 在揭开typeid神秘面纱之前,我们先来了解一下RTTI(Run-Time Type Identification,运行时类型识别),它使程序能够获取由基指针或引用所指向的对象的实际派生类型,即允许“用指向基类的指针或引用来操作对象”的程序能够获取到“这些指针或引用所指对象”的实际派生类型.在C++中,为了支持RTTI提供了两个操作符:dynamic_cast和typei…
typeid操作符的作用就是获取一个表达式的类型.返回结果是const type_info&.不同编译器实现的type_info class各不相同.但c++标准保证它会实现一个name()方法,该方法返回类型名字的c-style字符串. 如果typeid的操作数不是类类型或者是没有虚函数的类,则typeid指出该操作数的静态类型.如果操作数是定义了至少一个虚函数的类类型,则在运行时计算类型. // expre_typeid_Operator.cpp // compile with: /GR /…
在揭开typeid神秘面纱之前,我们先来了解一下RTTI(Run-Time Type Identification,运行时类型识别),它使程序能够获取由基指针或引用所指向的对象的实际派生类型,即允许“用指向基类的指针或引用来操作对象”的程序能够获取到“这些指针或引用所指对象”的实际派生类型.在C++中,为了支持RTTI提供了两个操作符:dynamic_cast和 typeid. dynamic_cast允许运行时刻进行类型转换,从而使程序能够在一个类层次结构中安全地转化类型,与之相对应的还有一个…
使用typeid(变量或类型).name()来获取常量或变量的类型 <typeinfo>  该头文件包含运行时类型识别(在执行时确定数据类型)的类 typeid的使用   typeid操作符        typeid表达式形如:      typeid(expr): 这里expr是任意表达式或者类型名.如果表达式的类型是类类型且至少包含有一个虚函数,则typeid操作符返回表达式的动态类型,需要在运行时计算:否则,typeid操作符返回表达式的静态类型,在编译时就可以计算. typeid操作…
最近看了boost::any类源码,其实现主要依赖typeid操作符.很好奇这样实现的时间和空间开销有多大,决定探一下究竟. VS2008附带的type_info类只有头文件,没有源文件,声明如下: class type_info { public: virtual ~type_info(); _CRTIMP_PURE bool __CLR_OR_THIS_CALL operator==(const type_info& rhs) const; _CRTIMP_PURE bool __CLR_O…
Wrote by mutouyun. (http://darkc.at/cxx-get-the-name-of-the-given-type/)   地球人都知道C++里有一个typeid操作符可以用来获取一个类型/表达式的名称: std::cout << typeid(int).name() << std::endl; 但是这个name()的返回值是取决于编译器的,在vc和gcc中打印出来的结果如下: int // vc i   // gcc 一个稍微长一点的类型名称,比如: c…
一.RTTI Run-time type information (RTTI) is a mechanism that allows the type of an object to be determined during program execution. There are three main C++ language elements to run-time type information: The dynamic_cast operator. Used for conversio…
我们在程序中定义了一个基类,该基类有n个子类,为了方便,我们经常定义一个基类的指针数组,数组中的每一项指向都指向一个子类,那么在程序中我们如何判断这些基类指针是指向哪个子类呢? 本文提供了两种方法 (1) 自定义类id, (2)typeid 一.自定义id 如下所示基类father有两个子类son1 和 son2,我们在基类中定义类虚函数id,子类中分别重载了该函数,各个子类返回值都不同 class father { public: virtual void fun() { cout<<&qu…