c++基础补强-Day04
namespace 极简总结命名空间作用划分独立作用域解决同名变量 / 函数冲突模块化管理代码用::访问空间内成员。两种 using 用法using 命名空间::名字using 声明仅引入单个符号冲突少工程推荐using namespace 命名空间using 指令引入全部符号简写方便但易重名仅小型程序用。嵌套命名空间空间内再套空间层级管理C17 可简写A::B多层::访问。匿名命名空间无名称内部内容仅当前文件可见替代 static 做文件私有函数 / 变量。命名空间别名namespace 别名 原空间简化超长嵌套命名空间书写。2. 定义命名空间语法cpp运行namespace 空间名 { // 变量、函数、类、结构体 int a 10; void func() {} }二、访问命名空间元素using 声明 /using 指令1. 限定符直接访问基础写法不使用任何 using每次写全空间名cpp运行std::cout LibA::a endl; LibA::func();2. using 声明using 标识符语法using 空间::名字;作用只引入单个指定符号仅该名字可直接使用其他符号仍需加空间前缀。cpp运行#include iostream using std::cout; // 只引入std里的cout int main() { cout 直接用cout endl; // cin 未声明必须写 std::cin std::cin x; return 0; }3. using 指令using namespace 空间语法using namespace 空间名;作用一次性引入整个空间所有符号空间内所有名称都可无前缀使用。cpp运行#include iostream using namespace std; // 导入std全部内容 int main() { cout hello; cin x; endl; return 0; }三、嵌套命名空间1. 概念命名空间内部再定义 namespace形成层级结构适合多层级代码分组如项目→模块→工具。2. 定义方式老式写法C17 前cpp运行namespace Project { namespace Net { void send() { cout 网络发送 endl; } } }C17 简化语法推荐cpp运行namespace Project::Net { void send() {} }3. 使用嵌套命名空间多层::逐层访问cpp运行// 完整写法 Project::Net::send(); // 搭配using简化 using namespace Project::Net; send();四、匿名命名空间 命名空间别名1. 匿名命名空间无名字 namespace定义cpp运行namespace { int temp 100; void helper() {} }核心特性 作用作用域仅限当前文件等价于加static其他 cpp 文件无法访问里面的内容替代全局 static 变量 / 函数C 推荐优先用匿名空间使用场景只在当前源文件内部使用的工具函数、临时变量防止跨文件命名冲突。使用匿名空间内的符号直接使用无需前缀cpp运行helper(); cout temp;2. 命名空间别名给长空间简写语法namespace 别名 原空间名;解决多层嵌套、超长命名空间书写繁琐问题。cpp运行// 超长嵌套空间 namespace Game::Logic::Battle::Skill { void fire() {} } // 设置别名 namespace Skill Game::Logic::Battle::Skill; // 使用别名调用 Skill::fire();也可给普通空间起别名cpp运行namespace A LibA; A::print();二、nullptrC11 空指针nullptr关键字类型std::nullptr_t专门代表空指针对比 NULL / 0NULL 是宏#define NULL 0本质整型0 是字面量 int重载场景下 NULL/0 会匹配 int 版本产生歧义nullptr 只会匹配指针转换规则nullptr 可隐式转为任意指针类型普通指针不能隐式转 nullptr_t规范C11 后统一用 nullptr不用 NULL、0 表示空指针class struct 完整知识点梳理一、基础核心区别本质相同class、struct都属于自定义复合类型都能写成员变量、成员函数、构造、析构、重载、继承、多态等语法几乎互通。两大默认差异考点核心1默认成员访问权限struct所有成员默认 publicclass所有成员默认 private示例cpp运行struct S { int a; // public }; class C { int a; // private };2默认继承方式cpp运行// struct 默认 public 继承 struct Son : Base {}; // class 默认 private 继承 class Son : Base {};二、三种访问权限 public /protected/privatepublic 公有外部任意代码、子类、自身都能直接访问。protected 保护仅自身 派生类可以访问外部不能访问。private 私有只有类内部自身能访问子类、外部均不可访问。手动修改权限用访问控制块分段声明cpp运行class Test { private: int x; protected: int y; public: void func(){} };四、函数重载静态多态定义同一作用域同名函数参数列表不同个数 / 类型 / 顺序不能作为重载区分仅返回值不同、仅参数名不同重载解析编译器自动匹配实参优先级精确匹配 提升转换 普通转换多重等价匹配会报歧义重载 vs 函数模板重载手动写每个版本逻辑可不同类型固定有限模板一套代码自动生成多类型逻辑统一扩展性强五、inline 内联函数inline 只是给编译器的优化建议非强制命令作用调用处展开函数体消除函数调用压栈跳转开销使用规范短小函数1~5 行、无循环 / 递归放头文件加 inline解决多文件 include 重复定义报错复杂函数循环、递归、代码量大放 cpp不用 inline编译器会直接忽略 inline验证方式编译加 - O2 优化查看汇编无 call 指令代表成功内联类内直接定义的成员函数默认隐式 inline六、const 全场景1. const 普通变量初始化后不可修改定义时必须赋值有类型、作用域优于 #define 宏2. const 指针必考区分const int* p指向常量指针内容不可改指针可换指向int* const p指针常量指针地址固定内容可修改const int* const p双重 const内容、指针均不可改3. const 修饰函数参数const T只读引用函数内禁止修改外部数据避免拷贝提升安全4. const 修饰返回值返回const T* / const T外部无法通过返回值修改内部数据内置类型加 const 无意义5. const 成员函数函数末尾加 const承诺不修改类成员mutable 修饰变量例外const 函数内仍可修改 规则const 对象只能调用 const 成员函数

相关新闻

Sunshine游戏串流终极指南:3步搭建跨平台家庭游戏中心

Sunshine游戏串流终极指南:3步搭建跨平台家庭游戏中心

Sunshine游戏串流终极指南:3步搭建跨平台家庭游戏中心 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款强大的开源游戏串流服务器,专为Moonli…

2026/6/27 16:46:24阅读更多 →
IDEA快捷键效率革命(2024终极配置清单):实测提升编码速度41%,附可一键导入的keymap文件

IDEA快捷键效率革命(2024终极配置清单):实测提升编码速度41%,附可一键导入的keymap文件

更多请点击: https://intelliparadigm.com 第一章:IDEA快捷键效率革命的底层逻辑与价值重估 IntelliJ IDEA 的快捷键体系并非功能堆砌的偶然产物,而是基于“认知负荷最小化”与“操作路径最短化”双重原则构建的交互范式。其底层依托 PSI&am…

2026/6/27 16:41:23阅读更多 →
音乐管理系统-ssm vue mysql

音乐管理系统-ssm vue mysql

本项目为前几天收费帮学妹做的一个项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 基于ssm,vue的音乐管理系统。通过ssm,vue框架进行开发 前台登录页面 http://local…

2026/6/27 16:41:23阅读更多 →
C++(链表二)

C++(链表二)

分享内容 循环链表双向链表操作双向链表 虚拟内存空间 进程的虚拟内存空间通常分为两部分:用户空间:这是普通程序可以访问的内存区域,包括代码段、数据区、栈区、堆区等。内核空间:这是操作系统内核专用的内存区域,普通程序无法直接访问。内核空间用于存储内核代码、内核数据结…

2026/6/27 18:06:35阅读更多 →
HR必看:员工入职电子合同签署全流程避坑指南

HR必看:员工入职电子合同签署全流程避坑指南

前言又到招聘旺季。每年这个时候,都是HR最忙碌也最容易"踩坑"的时段。入职手续办理、劳动合同签署,每一个环节都暗藏风险,一旦处理不当,轻则员工投诉,重则劳动仲裁。随着电子劳动合同的普及,很多…

2026/6/27 18:06:35阅读更多 →
直付通二级商户如何识别“真合规”与“伪合规”

直付通二级商户如何识别“真合规”与“伪合规”

在直付通生态中,合规是一个高频词,但也是一个容易被滥用的词。几乎每一家宣称自己可以做一级直付通的服务商,都会把“合规”挂在嘴边。然而,对于二级直付通商户来说,真正需要分辨的不是对方嘴上说了什么,而…

2026/6/27 18:06:35阅读更多 →
5个核心概念,让你快速入门大模型,小白也能轻松掌握(收藏版)

5个核心概念,让你快速入门大模型,小白也能轻松掌握(收藏版)

本文旨在帮助初学者理解AI的基本概念,特别是大模型的工作原理。文章通过解释Agent、大模型、工具、Skill和上下文这五个关键概念,揭示了AI如何从简单的聊天工具转变为能够执行具体任务的智能助手。作者强调,AI的能力不仅取决于其内部的大模型…

2026/6/27 18:06:35阅读更多 →
海上平台油田发电机使用具体有哪些特殊要求?

海上平台油田发电机使用具体有哪些特殊要求?

海上平台所处的环境是极其极端的。油田方面的发电机在海上平台进行运行的时候,其所面临的条件要比在陆地之上苛刻得多。我们对几个关键且特殊的要求进行了整理。这些要求能够协助大家更好地去理解设备选型以及维护方面的要点。耐腐蚀与防盐雾设计1. 材质与涂层海上的…

2026/6/27 18:06:35阅读更多 →
066、CodeX 插件市场:发现、安装、评估与管理社区插件

066、CodeX 插件市场:发现、安装、评估与管理社区插件

066、CodeX 插件市场:发现、安装、评估与管理社区插件 上周五凌晨两点,我盯着终端里那条诡异的“Module not found: Can’t resolve ‘codex-plugin-utils’”报错,咖啡已经凉透了。明明昨天还能正常运行的流水线,今天突然炸了——后来发现是同事在插件市场里手滑点了个“自…

2026/6/27 18:01:34阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/27 11:20:40阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/27 5:46:02阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/27 11:20:39阅读更多 →
10分钟AI语音克隆与实时变声:Retrieval-based-Voice-Conversion-WebUI完整指南

10分钟AI语音克隆与实时变声:Retrieval-based-Voice-Conversion-WebUI完整指南

10分钟AI语音克隆与实时变声&#xff1a;Retrieval-based-Voice-Conversion-WebUI完整指南 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI Easily train a good VC model with voice data < 10 mins! 项目地址: https://gitcode.com/GitHub_Trending/re/Retrie…

2026/6/27 0:04:03阅读更多 →
Layerdivider:3分钟AI智能分层,彻底告别手动抠图时代

Layerdivider:3分钟AI智能分层,彻底告别手动抠图时代

Layerdivider&#xff1a;3分钟AI智能分层&#xff0c;彻底告别手动抠图时代 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 还在为复杂的图像分层工作烦…

2026/6/27 0:04:03阅读更多 →
Tomcat中X-Frame-Options配置实战:防御点击劫持的四种方法与最佳实践

Tomcat中X-Frame-Options配置实战:防御点击劫持的四种方法与最佳实践

1. 项目概述&#xff1a;为什么X-Frame-Options是Web安全的“防盗门”&#xff1f;最近在排查一个老项目的安全审计报告时&#xff0c;又被提到了“点击劫持”风险&#xff0c;矛头直指缺失的X-Frame-Options响应头。这已经不是第一次了&#xff0c;很多开发团队&#xff0c;尤…

2026/6/27 0:04:03阅读更多 →