您的当前位置:首页正文

C++中typeid的用法

2023-07-22 来源:客趣旅游网


C++中typeid的用法

typeid是C++的关键字之一,等同于sizeof这类的操作符。typeid操作符的返回结果是名为type_info的标准库类型的对象的引用。

如果表达式的类型是类类型且至少包含有一个虚函数,则typeid操作符返回表达式的动态类型,需要在运行时计算;否则,typeid操作符返回表达式的静态类型,在编译时就可以计算。

#define OUTPUT(f) cout << #f << \"\: \" << typeid(f).name() << endl;

class BaseA {};

class DeriveA: public BaseA {};

class BaseB

{

virtual void f(){}

};

class DeriveB: public BaseB {};

int _tmain(int argc, _TCHAR* argv[])

{

cout << \"-------直接处理类名-------\" <OUTPUT(BaseA);

OUTPUT(DeriveA);

OUTPUT(BaseB);

OUTPUT(DeriveB);

cout << endl << \"-------基类不含虚函数-------\" <BaseA baseA;

DeriveA deriveA;

OUTPUT(baseA);

OUTPUT(deriveA);

BaseA* pa;

pa = &baseA;

OUTPUT(*pa);

OUTPUT(pa);

pa = &deriveA;

OUTPUT(*pa);

OUTPUT(pa);

cout << endl << \"-------基类含有虚函数-------\" <BaseB baseB;

DeriveB deriveB;

OUTPUT(baseB);

OUTPUT(deriveB);

BaseB* pb;

pb = &baseB;

OUTPUT(*pb);

OUTPUT(pb);

pb = &deriveB;

OUTPUT(*pb);

OUTPUT(pb);

}

1.当typeid操作符的操作数是不带有虚函数的类类型时,typeid操作符会指出操作数的类型,而不是底层对象的类型。

2.如果typeid操作符的操作数是至少包含一个虚拟函数的类类型时,并且该表达式是一个基类的引用,则typeid操作符指出底层对象的派生类类型。

因篇幅问题不能全部显示,请点此查看更多更全内容