编写自己的头文件
为了让类只定义一次便可以在各个文件中使用该类所以类通常被定义在头文件中而且类所在头文件的名字应与类的名字相同。例如库类型string在名为string的头文件中定义。头文件通常包含那些只能被定义一次的实体如类、const和constexpr变量等。头文件也经常用到其他头文件的功能。例如头文件Sales_data.h#includestring struct Sales_data { std::string bookNo; unsigned units_sold0; double revenue0.0; };main文件#includeiostream #includestring #includeSales_data.h int main() { Sales_data data1; data1.bookNo 123-456-789; std::string bookNo1 data1.bookNo; std::cout Book number: bookNo1 std::endl; return 0; }例如我们的Sales_date类包含有一个string成员所以Sales_date.h必须包含string.h头文件。同时使用Sales_date类的程序为了能操作bookNo成员需要再一次包含string.h头文件。这样事实上使用Sales_date类的程序就先后两次包含了string.h头文件一次是直接包含的另一次是随着包含Sales_date.h被隐式地包含进来的。有必要在书写头文件时做适当处理使其遇到多次包含的情况也能安全和正常地工作。为了头文件多次包含仍能安全工作的常用技术是预处理器。预处理器是在编译之前执行的一段程序可以部分地改变我们所写的程序。比如其中一项预处理功能#include当预处理器看到#include标记时就会用指定的头文件的内容代替#include。#头文件一旦改变相关的源文件必须重新编译以获取更新过的声明#其中一项的预处理功能是头文件保护符。头文件保护符依赖于预处理变量。预处理变量有两种状态已定义和未定义。#define指令把一个名字设定为预处理变量另外两个指令则分别检查某个指定的预处理变量是否已经定义#ifdef当且仅当变量已定义时为真#ifndef当且仅当变量未定义时为真。一旦检查结果为真则执行后续操作直至遇到#endif指令为止。使用这些功能就能有效防止重复包含的发生#ifndef SALES_DATA_H #define SALES_DATA_H #includestring struct Sales_data { std::string bookNo; unsigned units_sold0; double revenue0.0; }; #endif第一次包含Sales_data.h时#ifndef的检查结果为真预处理器将顺序执行后面的操作直至遇到#endif为止。此时预处理变量SALES_DATA_H的值将变为已定义而且Sales_data.h也会被#include的预处理拷贝到我们的程序中来。后面如果再一次包含Sales_data.h则#ifndef的检查结果将为假编译器将忽略#ifndef到#endif之间的部分。#预处理变量无视C语言中关于作用域的规则#整个程序中的预处理变量包括头文件保护符必须唯一通常的做法是基于头文件中类的名字来构建保护符的名字以确保其唯一性。为了避免与程序中的其他实体变量拥有类型、作用域、被编译器识别的命名对象发生名字冲突一般把预处理变量的名字全部大写。头文件即使目前还没有被包含在任何其他头文件中也应该设置保护符。为了安全

相关新闻

说中文做一个洗车店会员次卡小程序

说中文做一个洗车店会员次卡小程序

结论先摆这儿:给一家洗车店做的「充次卡—扫码核销—余次提醒」小程序,我从张嘴描述需求到能真机核销,前后大概花了两个半小时,没自己写小程序那套代码。全程记录在下面,做类似东西的可以照着抄。 为什么是次卡&#…

2026/7/18 21:34:44阅读更多 →
Figma AI组件变体深度解析(2024企业级实测报告):准确率92.7%、响应<800ms的变体生成黑盒拆解

Figma AI组件变体深度解析(2024企业级实测报告):准确率92.7%、响应<800ms的变体生成黑盒拆解

更多请点击: https://kaifayun.com 第一章:Figma AI组件变体的核心定位与企业级价值演进 Figma AI组件变体并非简单的自动化设计辅助功能,而是设计系统演进的关键枢纽——它将设计意图、开发约束与业务语义深度融合,在原子化组件…

2026/7/18 21:34:44阅读更多 →
数据库领域的AI成熟度模型:从Level0手工到Level5完全自治,你的系统在哪一级

数据库领域的AI成熟度模型:从Level0手工到Level5完全自治,你的系统在哪一级

数据库领域的AI成熟度模型:从Level0手工到Level5完全自治,你的系统在哪一级 一、每家都说自己做了AI4DB,但水平天差地别 "AI for Database"已经成为数据库产品的标配营销术语。某云厂商的宣传页上说"AI自动优化器"&#…

2026/7/18 21:34:44阅读更多 →
精成会通专注见真章专注无纸化会议系统

精成会通专注见真章专注无纸化会议系统

在数字化转型浪潮中,会议作为企业沟通与决策的核心场景,正在经历一场从传统纸质化向智能化、无纸化的深刻变革。广州精成会通电子科技有限公司,深耕无纸化会议领域多年,凭借“专业专心专注”的核心理念,为党政军警、金…

2026/7/18 22:58:59阅读更多 →
M大小鼠抓力测定仪 大小鼠抓力仪 大小鼠抓力测量仪

M大小鼠抓力测定仪 大小鼠抓力仪 大小鼠抓力测量仪

一、简介用该仪器对大、小鼠抓力进行测试是为O56I6O623O7了评价药物、毒物、肌肉松驰剂、中枢神经抑制剂、兴奋剂等对动物肢体力量 的影响程度,同时也可对动物的衰老、神经损伤、骨骼损 伤、肌肉损伤、韧带损伤程度以及其恢复程度进行鉴定, 这是一种使…

2026/7/18 22:58:59阅读更多 →
车用油复合剂源头厂家哪家专业

车用油复合剂源头厂家哪家专业

最近不少润滑油调合厂、车用油品牌商的采购部门都在问:现在做车用油复合剂的源头厂家这么多,到底哪家更适配自身需求?尤其是在国产替代加速、API标准升级、供应链波动加剧的背景下,选厂家早已不是只看吨价这么简单,配方…

2026/7/18 22:58:59阅读更多 →
编译原理硬核语法制导翻译——给文法赋予“含义“(五)

编译原理硬核语法制导翻译——给文法赋予“含义“(五)

1. 定位导航 建立了语法的形式(CFG → 分析树)。本篇往树上"挂东西": 文法(形式)  +  属性与语义规则(含义)  =  语法制导定义 (SDD)\text{文法(形式)} \;+\; \text{属性与语义规则(含义)} \;=\; \text{语法制导定义 (SDD)}文法(形式)+

2026/7/18 22:58:59阅读更多 →
为什么你的Cursor日志永远少一行关键堆栈?——从V8异常捕获链到AST重写层的11层调用栈穿透分析

为什么你的Cursor日志永远少一行关键堆栈?——从V8异常捕获链到AST重写层的11层调用栈穿透分析

更多请点击: https://intelliparadigm.com 第一章:Cursor日志“少一行”的现象级悖论 当开发者在 Cursor 中启用实时日志流(Live Logs)并执行多行输出的 Go 程序时,常观察到终端显示的日志行数比预期少一行——尤其在…

2026/7/18 22:58:59阅读更多 →
AI创作走向「千人千面」:智能体私人订制如何重塑短剧、漫画、电商、文旅四大场景

AI创作走向「千人千面」:智能体私人订制如何重塑短剧、漫画、电商、文旅四大场景

2026年7月17日开幕的2026世界人工智能大会(WAIC)主题定为"智能伙伴共创未来"。这个主题背后是明确的行业转向:AI从"通用工具"进化为"千人千面的智能伙伴"。据紫金山新闻《世界级AI大会,"南京队…

2026/7/18 22:56:59阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/18 10:49:13阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/18 8:49:08阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/18 14:49:24阅读更多 →
从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

更多请点击: https://kaifayun.com 第一章:从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则 在Claude驱动的产品需求文档(PRD)生成实践中,原始业务意图往往以自然语言片…

2026/7/18 0:00:14阅读更多 →
Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

更多请点击: https://codechina.net 第一章:Cursor配置生成失效?3大隐藏陷阱4行修复代码,资深工程师连夜整理的紧急补救清单 Cursor 配置生成突然失效,是近期高频报障场景。表面看是 cursor.config.json 未更新或 LSP…

2026/7/18 0:00:14阅读更多 →
某智驾大牛创业

某智驾大牛创业

作者:钟声编辑:Mark出品:红色星际头图:智能驾驶图片据悉,国内某头部智驾公司端到端模型技术大牛Z投身创业,并且已经拿到融资。Z不仅是该头部公司内部最年轻的对标阿里P10级别技术负责⼈,更是业内…

2026/7/18 0:00:14阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/18 22:49:46阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/18 14:49:24阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/18 18:49:35阅读更多 →