c++ typeid运算符

article/2025/6/18 13:30:10

typeid运算符能获取类型信息。获取到的是type_info对象。type_info类型如下:

可以看到,这个类删除了拷贝构造函数以及等号操作符。有一些成员函数:hash_code、before、name、raw_name,  还重载了==和!=运算符。

测试:

void testTypeId() {//获取一个普通变量的类型信息unsigned int n = 9527;const type_info& nInfo = typeid(n); // 得到type_info 对象std::cout << "普通变量的类型信息:" << nInfo.name() << " | " << nInfo.raw_name() << " | " << nInfo.hash_code() << endl;//获取一个普通类型的类型信息const type_info& charInfo = typeid(char);std::cout << "普通类型的类型信息:" << charInfo.name() << " | " << charInfo.raw_name() << " | " << charInfo.hash_code() << endl;//获取一个字面量的类型信息const type_info& dInfo = typeid(95.27);std::cout << "字面量的类型信息:" << dInfo.name() << " | " << dInfo.raw_name() << " | " << dInfo.hash_code() << endl;class Base {};struct MyStruct {};//获取一个对象的类型信息Base obj;const type_info& objInfo = typeid(obj);std::cout << "对象的类型信息:" << objInfo.name() << " | " << objInfo.raw_name() << " | " << objInfo.hash_code() << endl;//获取一个结构体的类型信息const type_info& stuInfo = typeid(struct MyStruct);std::cout << "结构体的类型信息:" << stuInfo.name() << " | " << stuInfo.raw_name() << " | " << stuInfo.hash_code() << endl;//获取一个表达式的类型信息const type_info& expInfo = typeid(9528 - 1);std::cout << "表达式的类型信息:" << expInfo.name() << " | " << expInfo.raw_name() << " | " << expInfo.hash_code() << endl;
}

打印:

typeid运算符能用于类型比较。

基本类型比较,代码:

// 测试基本类型:
char* str;
int a = 9527;
int b = 1;
float f;
std::cout << "typeid(int) == typeid(int) ? " << (typeid(int) == typeid(int)) << endl;
std::cout << "typeid(int) == typeid(char) ? " << (typeid(int) == typeid(char)) << endl;
std::cout << "typeid(char) == typeid(char*) ? " << (typeid(char) == typeid(char*)) << endl;
std::cout << "typeid(str) == typeid(char*) ? " << (typeid(str) == typeid(char*)) << endl;
std::cout << "typeid(a) == typeid(int) ? " << (typeid(a) == typeid(int)) << endl;
std::cout << "typeid(a) == typeid(b) ? " << (typeid(a) == typeid(b)) << endl;
std::cout << "typeid(a) == typeid(f) ? " << (typeid(a) == typeid(f)) << endl;
std::cout << "typeid(a - b) == typeid(int) ? " << (typeid(a - b) == typeid(int)) << endl;

打印:

类的比较,代码:

// 类的比较:
class Sub : public Base {};
Base obj1;
Base* p1;
Sub obj2;
Sub* p2 = new Sub;
p1 = p2;
std::cout << "typeid(obj1) == typeid(p1) ? " << (typeid(obj1) == typeid(p1)) << endl;
std::cout << "typeid(obj1) == typeid(*p1) ? " << (typeid(obj1) == typeid(*p1)) << endl;
std::cout << "typeid(obj1) == typeid(obj2) ? " << (typeid(obj1) == typeid(obj2)) << endl;
std::cout << "typeid(p1) == typeid(Base*) ? " << (typeid(p1) == typeid(Base*)) << endl;


http://www.hkcw.cn/article/REfuOvHROR.shtml

相关文章

一人住院不必全家奔波!免陪照护试点“全国版”

俗话说“久病床前无孝子”,这句话道出了很多家庭面对病人陪护时的无奈与压力。特别是现在每个人都在谈论的老龄化,再叠加上独生子女,父母住院时的陪护,就更是个越来越难的难题。这时候,如果能由医院来提供标准化的照护服务,估计很多人听了都会有一种如释重负的感觉。随着…

F1西班牙站排位赛:皮亚斯特里夺杆位,迈凯伦强势领跑

北京时间5月31日,F1西班牙大奖赛排位赛落下帷幕。皮亚斯特里夺得杆位,诺里斯和维斯塔潘分列二、三位。拉塞尔排名第四,汉密尔顿第五,安东内利第六,勒克莱尔第七,加斯利第八,哈贾尔第九,阿隆索第十。阿尔本第十一,塞恩斯第十八,科拉平托第十九,角田裕毅第二十。在首轮…

哈马斯回应加沙停火提案 美称“不可接受”

哈马斯回应加沙停火提案 美称“不可接受” 以称继续行动△美国中东问题特使威特科夫(资料图)央视记者获悉,特朗普政府提出的一项旨在促成加沙停火的新一轮提案,遭到巴勒斯坦伊斯兰抵抗运动(哈马斯)的修改要求。对此,美国中东问题特使威特科夫当地时间5月31日公开表示,哈…

uniapp与微信小程序开发平台联调无法打开IDE

经测试属于网络问题。本机需要联网。否则会出现Hbuilder运行微信小程序到模拟器时无法打开 微信开发者工具 这个页面出不来会一直显示异常。这期间微信小程序开发工具的端口是通的 需要先联网

Deseq2:MAG相对丰度差异检验

首先使用代码将contigs和MAG联系起来 https://github.com/MrOlm/drep/blob/master/helper_scripts/parse_stb.py ~/parse_stb.py --reverse -f ~/bin_dir/* -o ~/bin_dir/genomes.stb # 查看第一列的contigs有没有重复&#xff08;重复的话会影响后续比对&#xff09; awk {p…

自动驾驶系列—Monocular 3D Lane Detection for Autonomous Driving

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

这纳米手套能「传触感」,98% 准度+无线震动反馈

*本文只做阅读笔记分享* 一、研究背景与挑战 今天我们聚焦一项针对上肢感觉障碍的创新康复技术。创伤性脊髓损伤&#xff08;TSCI&#xff09;在儿童群体中危害显著&#xff0c;因其神经系统尚未发育成熟&#xff0c;常导致患肢失用、对侧肢体过度使用等问题。当前传统疗法如…

Java基础学习

输入输出 import java.util.*; public class Main {public static void main(String[] args) {int s 888;String s1 "Hello World"; // System.out.print(s); // System.out.print(s1);System.out.println(s);System.out.println(s1);Scanner sc ne…

异构边缘智能处理加速板

简介&#xff1a; TC-ATLAS200-K7325TI是一套FPGAGPU架构的异构边缘智能处理加速板。该板基于华为 ATLAS200 GPU及Xilinx K7高性能FPGA&#xff08;可替换为复旦微JFM7K325T&#xff09;设计而成。 GPU与FPGA之间通过PCIE2.0 X4 互连&#xff0c;实现两者之间数据的高速传输。板…

进程间通信(消息队列)

目录 一 原理 二 API 1. ftok 2. msgget 3. msgctl 4. msgsnd 5. msgrcv 三 demo代码 四 基于责任链模式和消息队列对数据处理 1. 什么是责任链模式 2. 下面基于责任链模式来对消息队列获取的消息进行处理 前置 其实system v 版本的进程间通信&#xff0c;设计的接…

解决8080端口被占问题

文章目录 1. 提出问题2. 解决问题2.1 查看占用8080端口的进程2.2 杀死占用8080端口的进程2.3 测试问题是否已解决3. 实战小结1. 提出问题 运行Spring Boot项目,报错8080端口被占 2. 解决问题 2.1 查看占用8080端口的进程 执行命令:netstat -ano | findstr :8080 2.2 杀死占用…

【harbor】--基础使用

推送 不同的管理工具都有说明 以docker为例 # 第一步--打标签 docker tag SOURCE_IMAGE[:TAG] 192.168.121.201:801/haohao_fist/REPOSITORY[:TAG] # 第二步--推送 docker push 192.168.121.201:801/haohao_fist/REPOSITORY[:TAG]默认push推送为https push会失败 解决办法…

论文略读:To the Globe (TTG): Towards Language-Driven Guaranteed Travel Planning

2024 Emnlp demo 提出了TTG&#xff0c;一个演示系统&#xff0c;它能够接收用户的自然语言指令&#xff0c;并在几秒钟内生成最优的旅行行程 结合了大语言模型&#xff08;LLMs&#xff0c;Llama-3 70B&#xff09;与现有的符号求解器&#xff08;例如混合整数线性规划&#…

《操作系统真相还原》——初探保护模式

BUG 果不其然出现bug b 0x900在进入loader的时候打个断点&#xff0c;看看什么情况&#xff0c;好吧突然想起来&#xff0c;可能弄错镜像了 重新执行 正确 info gdt看一下相关信息

[yolov11改进系列]基于yolov11引入高效坐标注意力机制CoordAttention的python源码+训练源码

【CoordAttention介绍】 在轻量级网络上的研究表明&#xff0c;通道注意力会给模型带来比较显著的性能提升&#xff0c;但是通道注意力通常会忽略对生成空间选择性注意力图非常重要的位置信息。因此&#xff0c;新加坡国立大学的提出了一种为轻量级网络设计的新的注意力机制&a…

AI Agent的“搜索大脑“进化史:从Google API到智能搜索生态的技术变革

AI Agent搜索革命的时代背景 2025年agent速度发展之快似乎正在验证"2025年是agent元年"的说法&#xff0c;而作为agent最主要的应用工具之一(另外一个是coding)&#xff0c;搜索工具也正在呈现快速的发展趋势。Google在2024年12月推出Gemini Deep Research&#xff0…

以防长:辛瓦尔已死 这些人是下个目标

当地时间5月31日,以色列国防军发表声明,确认在以色列国防军与以色列国家安全总局(辛贝特)今年5月13日的联合行动中,以色列空军对巴勒斯坦伊斯兰抵抗运动(哈马斯)军事领导人穆罕默德辛瓦尔发动空袭并将其打死。以军声明称,此次空袭还打死了包括哈马斯拉法旅指挥官穆罕默…

8旬老人砍掉小区20年香樟树 私自修剪引发争议

家住浦东新区上南山水苑一期的业主王先生反映,小区内一群平均年龄七十多岁的老人以提高绿化环境为由,私自圈占公共绿化变为私人花园已有两年。物业和居委会多次劝阻无效,老人们的花越种越多。本周二上午,一位老人用网购的斧头和电锯砍伐了小花园内一棵20多年的香樟树。投诉…

代码随想录算法训练营第60期第五十三天打卡

大家好&#xff0c;我们今天来到了最后一章图论&#xff0c;其实图论比较难&#xff0c;涉及的算法也比较多&#xff0c;今天比较重要的就是深度优先搜索与广度优先搜索&#xff0c;后面的迪杰斯特拉算法等算法在我们求最短路都会涉及到&#xff0c;还有最近公共祖先&#xff0…

【Bluedriod】蓝牙协议栈GD模块(GD_SHIM_MODULE)启动机制及源码解析

本文深入剖析Android蓝牙协议栈中GD模块的启动机制&#xff0c;从模块生命周期管理、状态转换、异步初始化&#xff0c;到核心组件&#xff08;HCI层、协议栈管理器、广播/扫描/测距模块&#xff09;的协同运作。通过源码分析揭示蓝牙协议栈如何通过分层设计实现硬件抽象化、事…