c++中的typeid会忽略顶层const

int* a = nullptr;
	const int* b = nullptr;
	int * const c = nullptr;
	const int* const d = nullptr;

	std::cout << typeid(a).name() << std::endl;
	std::cout << typeid(b).name() << std::endl;
	std::cout << typeid(c).name() << std::endl;
	std::cout << typeid(d).name() << std::endl;

	return 0;


结果如下:
int * __ptr64
int const * __ptr64
int * __ptr64
int const * __ptr64

使用teypid对变量进行类型读取,从结果上看,typeid不能取得变量的顶层const属性。

文档中也记载了,typeid会忽略顶层const属性,也就是 typeid(T) = typeid(const T),则typeid引用则指向引用指向的类型。

typeid使用在类构造或者析构函数中,则只表示当前类,不能进行多态类型的判定。

另外使用typeid时,要包含头文件,否则程序会被谬构。

typeid只有在虚表查找时才会有运行时开销,否则都是在编译阶段完成。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值