C++ typeid运算符:获取类型信息

本文介绍了C++中的typeid运算符,用于获取表达式的类型信息。内容涵盖typeid的基本用法,如获取基本类型、类类型、对象、表达式等的类型信息,并通过示例代码展示其在不同情况下的应用。同时,文章提到了type_info类的成员函数,如name()、raw_name()和hash_code(),并讨论了C++中类型信息的局限性和在不同编译器下的表现差异。
摘要由CSDN通过智能技术生成

typeid 运算符用来获取一个表达式的类型信息。类型信息对于编程语言非常重要,它描述了数据的各种属性:

  • 对于基本类型(int、float 等C++内置类型)的数据,类型信息所包含的内容比较简单,主要是指数据的类型。

  • 对于类类型的数据(也就是对象),类型信息是指对象所属的类、所包含的成员、所在的继承关系等。

类型信息是创建数据的模板,数据占用多大内存、能进行什么样的操作、该如何操作等,这些都由它的类型信息决定。

typeid 的操作对象既可以是表达式,也可以是数据类型,下面是它的两种使用方法:

typeid( dataType ) typeid( expression )

dataType 是数据类型,expression 是表达式,这和 sizeof 运算符非常类似,只不过 sizeof 有时候可以省略括号( )

,而 typeid 必须带上括号。

typeid 会把获取到的类型信息保存到一个 type_info 类型的对象里面,并返回该对象的常引用;当需要具体的类型信息时,可以通过成员函数来提取。typeid 的使用非常灵活,请看下面的例子(只能在 VC/VS 下运行):

#include <iostream>

#include <typeinfo>

using namespace std;

class Base{ };

struct STU{ };

int main(){

//获取一个普通变量的类型信息

int n = 100;

const type_info &nInfo = typeid(n);

cout<<nInfo.name()<<" | "<<nInfo.raw_name()<<" | "<<nInfo.hash_code()<<endl;

//获取一个字面量的类型信息

const type_info &dInfo = typeid(25.65);

cout<<dInfo.name()<<" | "<<dInfo.raw_name()<<" | "<<dInfo.hash_code()<<endl;

//获取一个对象的类型信息

Base obj;

const type_info &objInfo = typeid(obj);

cout<<objInfo.name()<<" | "<<objInfo.raw_name()<<" | "<<objInfo.hash_code()<<endl;

//获取一个类的类型信息

const type_info &a

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值