跟我学C++中级篇—空类标签
一、空类在C中有一种特殊的类就是空类。所谓空类就是啥都没有。前面分析过空类作为基类的优势也分析过迭代器标签中空类的应用。说明空类这个东西还是很有价值的。正如数学中的零它的存在有着重要的作用。同样在C中空类在一些场景下也起了关键的作用。二、空类标签通过迭代器的标签可以进一步理解空类标签。它其实是作为类型标签来参与重载、模板特化及特定语义的处理一种机制。一般是指空的struct或class类型。即它本身未包含任何信息和数据只是一种类型的表现。如下structA_tag{};class B_tag{};它一般作为一种标签为分机制在编译阶段应用较为广泛。因为它是空的所以不会产生运行时的开销。如果对STL的源码有过较多分析可以发现在STL的源码中有很多的地方用到了这种机制。三、作用空类标签在C中的各个应用场景有着不同的作用主要有编译期分发处理可以在编译期进行类型的区分也可以作为萃取的基础实现空类型的判断重载函数的处理可以通过空类标签作为重载的区别从而支持各种自定义的重载实现零运行时成本这就与其本身的定义相关没有内容就意味着运行时的开销也没有模板特化空类标签可以通过模板参数让编译器为特定场景下的数据类型创建提供支持语义表达可以通过空标签名称的定义等机制实现正确的语义传递防止出现错误的理解标记和占位符这个就更好理解了不表达语义只为达到某种目的而占用一个空位或者通过空类标签来实现类似ID标识其主要的应用场景包括tag dispatchID标识的典型应用模板重载重载函数的应用策略选择这个类似于编译期的场景划分类型分类就是标记或萃取STL迭代器分类典型的编译期的类型处理表达构造语义如std::nullopt_t、std::in_place_t等大家如果有兴趣可以找一找其它的空类应用的场景对比分析一下。四、例程下面看一个空标签类的例程#includeiostream#includeiterator#includelist#includevectortemplatetypename ItvoiditImpl(Itit,intn,std::random_access_iterator_tag){std::coutcall random access iteratorstd::endl;itn;}templatetypename ItvoiditImpl(Itit,intn,std::bidirectional_iterator_tag){std::coutcall bidirectional iteratorstd::endl;while(n--0){it;}}templatetypename ItvoidcustomFunc(Itit,intn){//获取标签类型using Categorytypename std::iterator_traitsIt::iterator_category;//根据标签类型进行重载itImpl(it,n,Category{});}intmain(){std::vectorintv{10,22,18,36,59};std::listintl{1,10,20,66,100};autovItv.begin();autolItl.begin();customFunc(vIt,2);customFunc(lIt,2);std::coutvector cur:*vItstd::endl;std::coutlist cur:*lItstd::endl;return0;}五、总结大家可能都看过《射雕英雄传》里面一种拳叫做“空明拳”。当时觉得看到招式什么“空碗盛饭、空屋住人”觉得好笑。其实抽象来看这才是“空”的意味。空才能生物空才能状态变化。计算机中也是如此空是非空的对应是对象的一种有效标签。

相关新闻

TMS320VC5510 Bootloader深度解析:启动模式、Boot Table构建与调试实战

TMS320VC5510 Bootloader深度解析:启动模式、Boot Table构建与调试实战

1. 项目概述与Bootloader核心价值在嵌入式系统开发,尤其是数字信号处理器(DSP)应用领域,系统上电后的“第一行代码”如何执行,是决定整个产品稳定性和启动效率的关键。TMS320VC5510作为一款经典的定点DSP,其…

2026/7/23 18:56:17 阅读更多 →
基础知识之 结构体内存对齐,联合体,枚举,大小端

基础知识之 结构体内存对齐,联合体,枚举,大小端

文章目录结构体内存对齐联合体枚举大小端结构体 结构体是一个类型,每个结构体都独一无二 内存对齐 内存对齐增加CPU读取的效率,一次性读完整的数据,避免多次访问,用空间换时间 因为CPU不是按字节读取内存的,是按照字…

2026/7/22 13:55:51 阅读更多 →
用强Agent构建评测Harness,小白也能轻松玩转大模型评测(收藏版)

用强Agent构建评测Harness,小白也能轻松玩转大模型评测(收藏版)

本文介绍如何利用Claude Code搭建评测Harness,对业务Agent进行系统性评测。传统评测方式存在启动成本高、人力密集、迭代慢等问题,而Harness式评测通过将评测逻辑编码为Agent提示词,实现了快速迭代和零部署。文章详细阐述了Harness的整体架构…

2026/7/22 13:55:51 阅读更多 →

最新新闻

智慧水利机器视觉应用:AI视觉水位监测完整技术剖析

智慧水利机器视觉应用:AI视觉水位监测完整技术剖析

摘要在智慧水利数字化转型全面推进的行业背景下,传统接触式水位监测设备存在易淤堵、运维成本高、极端天气观测安全风险大、无实景佐证等短板,已难以满足河道、水库、灌区、城市内涝等多场景精细化水文管控需求。本文围绕AI视觉水位监测这套非接触式全自…

2026/7/23 22:30:25 阅读更多 →
PVC鞋材稳定剂应用与发展

PVC鞋材稳定剂应用与发展

PVC材质凭借柔韧耐磨、性价比突出的优势,广泛应用于各类鞋材生产加工领域,但PVC树脂在高温塑化、注塑发泡等加工工序中,容易出现分解变色、材质脆化、物料析出等问题,直接影响鞋材成品质量与使用寿命,而PVC鞋材稳定剂(…

2026/7/23 22:30:25 阅读更多 →
动态规划-子序列、回文子串

动态规划-子序列、回文子串

文章目录子序列(一维dp数组)题目 最长递增子序列题目 摆动序列题目:最长递增子序列的个数回文子串(二维dp数组)题目:字符串中,回文子串的个数题目:回文串分割题目:最小切…

2026/7/23 22:30:25 阅读更多 →
华硕商城 | ROG首款音响曝光!今夏最硬核的桌面升级指南!

华硕商城 | ROG首款音响曝光!今夏最硬核的桌面升级指南!

👇 华硕商城 👇 学生服务包套餐享学生价数码补贴至高立减15% 关注ASUS华硕官方账号了解更多惊喜福利#ROG音响#桌面升级#硬核#ROG

2026/7/23 22:30:25 阅读更多 →
AI数字人形象定制如何做到“一秒辨真伪”?揭秘头部平台未公开的8项微表情校准指标

AI数字人形象定制如何做到“一秒辨真伪”?揭秘头部平台未公开的8项微表情校准指标

更多请点击: https://intelliparadigm.com 第一章:AI数字人形象定制如何做到“一秒辨真伪”? 在高保真AI数字人构建中,“一秒辨真伪”并非追求绝对不可分辨,而是通过多维度感知一致性实现人类视觉与认知系统的瞬时信任…

2026/7/23 22:29:25 阅读更多 →
【AI数字人直播变现实战手册】:0基础7天打造24小时自动带货直播间

【AI数字人直播变现实战手册】:0基础7天打造24小时自动带货直播间

更多请点击: https://intelliparadigm.com 第一章:AI数字人直播变现的核心逻辑与商业闭环 AI数字人直播并非简单地将真人主播替换成虚拟形象,其本质是构建以“低成本、高复用、强可控”为特征的自动化内容生产与用户价值转化系统。核心逻辑在…

2026/7/23 22:29:25 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻