当前位置: 首页 > news >正文

【C++】C++中的命名/名字/名称空间 namespace

C++中的命名/名字/名称空间 namespace

  • 1、问题引入
  • 2、概念
  • 3、作用
  • 4、格式
  • 5、使用命名空间中的成员
    • 5.1 using编译指令( 引进整个命名空间) ---将这个盒子全部打开
    • 5.2 using声明使特定的标识符可用(引进命名空间的某个成员) ---将这个盒子中某个成员的位置打开
    • 5.3 调用的时候指定是哪一个命名空间下的成员
  • 6、示例代码
  • 7、命名空间的嵌套
  • 8、同名命名空间
  • 9、匿名命名空间
  • 10、全局作用域

1、问题引入

\quad 探讨:在实际的系统开发中,所有的开发工作,通常都不会仅由一个人来开发完成,不同的人只负责自己功能模块,他们在设计时,比如声明变量,通常情况下,不会考虑其他人是否已使用该变量名,在模块功能测试时,相互之间是独立的,完全没有问题,当系统功能合成 时,不可避免地会出现变量或函数的命名冲突,因为变量或函数重名而导致的问题将会造成一定的混乱。所以如何在同一个.cpp文件中定义相同变量名的两个全局变量呢

#include<iostream>int val = 200;
int val = 300;int main()
{return 0;
}

现象:编译会报错
解决方法:使用命名空间区分这两个全局变量

2、概念

其实命名空间就是类似一个黑盒子

3、作用

防止名字冲突

4、格式

namespace 命名空间名字
{//声明定义变量//声明定义函数//定义结构体/共用体/枚举 数据类型//声明类  定义对象
}

5、使用命名空间中的成员

5.1 using编译指令( 引进整个命名空间) —将这个盒子全部打开

 using namespace 命名空间名字;

5.2 using声明使特定的标识符可用(引进命名空间的某个成员) —将这个盒子中某个成员的位置打开

using 命名空间名字::成员名;

5.3 调用的时候指定是哪一个命名空间下的成员

cout<<命名空间名字::成员名

6、示例代码

#include<iostream>using namespace std;//使用名称空间LcdSpace  
namespace LcdSpace{int x = 10;int y = 20;typedef struct{int data;}Data_t;enum {LCD_COLOR_RED,LCD_COLOR_GREEN};int lcd_init(){return 0;}}; 
//使用名称空间TouchSpace
namespace TouchSpace{int x = 100;int y = 200;
};//外部的全局变量   
//int x = 1000;
//int y = 2000;//2)使用using声明的方式去引入名字空间中的某个成员
//把这个TouchSpace黑盒子 打开一个角落,正好把某个成员放出来
//格式:using 命名空间名字::成员名;
//using  TouchSpace::x;void test01()
{using namespace LcdSpace;cout<<"x:"<<x<<" y:"<<y<<endl;
}int main()
{//3)使用using编译指令的方式 打开整个名字空间 using namespace TouchSpace;//如何使用名字空间里面的成员//1)使用 作用域限定符:: 去指定//格式:  名字空间的名字::成员变量名std::cout<<TouchSpace::x<<" "<<TouchSpace::y<<std::endl;std::cout<<x<<" "<<y<<std::endl;std::cout<<LcdSpace::x<<" "<<LcdSpace::y<<std::endl;LcdSpace::Data_t data;LcdSpace::lcd_init();//我们有时候为了强调该变量的全局特性,可以在前面加上::修饰cout<<x<<" "<<y<<endl;test01();return 0;
}

7、命名空间的嵌套

namespace myspace{int x=10;int y=20;namespace spaceA{int a=100;void setValue(int data){a = data;}void printValue(){std::cout<<"a:"<<a<<std::endl;}}
}
使用:
myspace::spaceA::printValue();

8、同名命名空间

\quad 命名空间可以分开定义,也就是说,你在定义一个命名空间之后,如果后面想要在这个命名空间里面再次添加某些数据成员或者函数成员,可以再次接着定义。

namespace myspace{int x=10;int y=20;
}
namespace myspace{int a=100;int b=200;void print(){std::cout<<"x:"<<x<<" y:"<<y<<std::endl;}
}

9、匿名命名空间

namespace {int data=123;
}

可以在本文件中直接使用data, 限制空间中的成员只能在本文件中使用,类似c语言中的static修饰

10、全局作用域

\quad 全局作用域是从C语言就开始有的一种作用域,在C++中,有时为了强调某符号的全局特性,或为了避免与导入的名字空间中的重名符号冲突,会在使用全局符号的时候加上 作用域解析符

int global = 100;
int main()
{int global = 200;// 重名的标识符,外层的作用域会被内层的掩盖cout <<   global << endl; // 输出200// 使用双冒号引用全局作用域中的标识符cout << ::global << endl; // 输出100
}
  • 全局作用域的名字空间是匿名的,引用全局作用域符号只需加 :: 即可。
  • 名字空间的本质就是作用域,遵守C语言关于作用域的基本原则,如内层作用域重名符号会掩盖外层作用域的重名符号。

相关文章:

【C++】C++中的命名/名字/名称空间 namespace

C中的命名/名字/名称空间 namespace 1、问题引入2、概念3、作用4、格式5、使用命名空间中的成员5.1 using编译指令&#xff08; 引进整个命名空间&#xff09; ---将这个盒子全部打开5.2 using声明使特定的标识符可用(引进命名空间的某个成员) ---将这个盒子中某个成员的位置打…...

游戏引擎学习第260天:在性能分析器中实现钻取功能

昨天那个帧内存满之后触发段错误实在没找到什么原因导致的 继续研究一下为什么导致的 内存不够进来释放frame 释放frame 应该会给DebugState->FirstFreeStoredEvent 赋值吧 这段宏定义&#xff1a; #define FREELIST_DEALLOCATE(Pointer, FreeListPointer) \if(Pointer) {…...

人工智能100问☞第15问:人工智能的常见分类方式有哪些?

目录 一、通俗解释 二、专业解析 三、权威参考 人工智能的常见分类方式包括:​​按智能水平​​(弱人工智能、通用人工智能、超级人工智能)、​​按技术原理​​(生成式AI、判别式AI、强化学习)、​​按功能目标​​(生成内容、优化决策)、​​按应用领域​​(自然语…...

JavaSE核心知识点01基础语法01-04(数组)

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 JavaSE核心知识点01基础语法01-04&#xff0…...

抖音代播领航者——品融电商(PINKROON)的运营实力与服务解析

抖音代播领航者——品融电商&#xff08;PINKROON&#xff09;的运营实力与服务解析 在兴趣电商高速发展的背景下&#xff0c;杭州品融品牌管理有限公司&#xff08;PINKROON&#xff09;凭借其全域增长方法论与抖音生态的深度布局&#xff0c;成为众多品牌首选的抖音代播服务商…...

LeetCode 790 多米诺和托米诺平铺 题解

对于本题不去看LeetCode的评论区和题解很难想到如何去dp&#xff0c;毕竟就算再怎么枚举也很难找到适用于面向结果的规律。所以对于题解我建议大家还是去看一下灵神给的题解&#xff0c;以下是灵神汇总的图&#xff0c;如果能看懂的话&#xff0c;对于解决题目有很大的帮助。 根…...

力扣-hot100 (缺失的第一个正数)

41. 缺失的第一个正数 困难 给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,0] 输出&#xff1a;3 解释&#xff…...

Electrolink信息泄露(CVE-2025-28228)

免责声明 本文档所述漏洞详情及复现方法仅限用于合法授权的安全研究和学术教育用途。任何个人或组织不得利用本文内容从事未经许可的渗透测试、网络攻击或其他违法行为。使用者应确保其行为符合相关法律法规,并取得目标系统的明确授权。 对于因不当使用本文信息而造成的任何直…...

Leetcode Hot 100 三数之和

思路 对数组先排序&#xff0c;然后使用双指针法进行&#xff0c;并且整个过程需要把握去重的逻辑 代码 class Solution:def threeSum(self, nums: List[int]) -> List[List[int]]:if not nums:return []nums.sort() #去重都需要排序res[]for i in range(len(nums)):if i…...

5月6日日记

一点心得是 看通知要仔细认真&#xff0c;自己想问的问题要先看看通知或者文件中说了没有&#xff0c;如果没说再去问相关负责人。 上课的教室一定要看好&#xff0c;看准了再去。别像今天一样先去了科技楼又去了工学馆。 线代开课了。感觉总体还行&#xff0c;并不是很难。…...

巧记英语四级单词 Unit7-中【晓艳老师版】

collapse v.倒塌&#xff0c;坍塌 都(col)来扑(lap)噻immune a.不受影响的&#xff0c;免疫的 我im 木讷mune&#xff0c;人应该木讷一点yard n.院子 鸭的&#xff0c;在哪养&#xff1b;backyard 后院backward a.往后的 ward表示方向 profile n.外形&#xff0c;轮廓 从前面看…...

Windows系统修改Docker Desktop(WSL2)内存分配

# Windows查看docker信息 docker info 新增wsl全局配置文件(.wslconfig文件)&#xff1a;windows路径栏输入&#xff1a;%UserProfile%&#xff0c;找到目录C:\Users\Administrator&#xff0c;默认是没有这个配置文件的&#xff0c;可以自己新增 # 设置在wsl2上运行 [wsl2] # …...

Oracle02-安装

零、文章目录 Oracle02-安装 1、Windows Server2022安装Oracle11g &#xff08;1&#xff09;下载 百度网盘地址&#xff1a; https://pan.baidu.com/s/15MBkMt1ldbSFm4L74h7Myg?pwd8888下载完成两个压缩包解压放在一起 &#xff08;2&#xff09;安装 双击 setup 文件安…...

Linux[Makefile]

Makefile基础结构 规则语法 target: prerequisitescommandtarget&#xff1a;生成的目标&#xff08;如可执行文件、.o文件&#xff09; prerequisites&#xff1a;依赖项&#xff08;源码、头文件等&#xff09; command&#xff1a;构建命令&#xff08;必须用Tab缩进&am…...

相同的数(简单)

深度优先搜索 如果两个二叉树都为空&#xff0c;则两个二叉树相同。如果两个二叉树中有且只有一个为空&#xff0c;则两个二叉树一定不相同。 如果两个二叉树都不为空&#xff0c;那么首先判断它们的根节点的值是否相同&#xff0c;若不相同则两个二叉树一定不同&#xff0c;…...

「Mac畅玩AIGC与多模态22」开发篇18 - 多段输出拼接与格式化展现工作流示例

一、概述 本篇以已有多字段输出为基础&#xff0c;介绍如何通过执行 LLM 节点对多个上游字段进行统一拼接与格式化处理。开发人员将学习如何从多个节点输出中提取数据字段&#xff0c;并组合为结构清晰、风格统一的最终输出&#xff0c;提升用户阅读体验。 二、环境准备 mac…...

餐饮部绩效考核管理制度与综合评估方法

在竞争激烈的餐饮行业中&#xff0c;标准化与数据驱动的管理手段正成为提升服务质量与运营效率的关键。绩效考核不仅关乎员工奖惩&#xff0c;更直接影响顾客体验、成本控制与营收水平。构建一套科学有效的绩效体系&#xff0c;是餐饮部精细化运营的起点。 本文围绕餐饮部绩效…...

conda虚拟环境相关操作

查看当前存在哪些虚拟环境 conda env list conda info --env创建虚拟环境conda create -n env_name pythonX.X删除虚拟环境conda remove -n env_name --all查看安装了哪些包conda list下载/删除环境中的某个包conda install package_nameconda uninstall package_name删除所有未…...

达梦DM数据库安装步骤

文章目录 1、下载并解压缩2、安装DM数据库2.1 运行安装程序2.2 选择语言与时区2.3 安装向导2.4 许可证协议2.5 Key文件2.6 选择组件2.7 安装位置2.8 安装前小结2.9 安装过程2.10 已完成2.11 初始化 3、配置实例3.1选择操作方式3.2创建数据库模版3.3指定数据库目录3.4数据库标识…...

vue3在使用@import “./index.scss“报错

Deprecation Warning: Sass import rules are deprecated and will be removed in Dart Sass 3.0.0. More info and automated migrator: https://sass-lang.com/d/import 2 │ import "./index.scss"; 在 Sass 3.0.0.之后 导入样式使用 “use” &#xff0c;不在使…...

对标研华ECU-461,搭载飞腾4核/8核国产处理器, 提供8网 8串B码对时 双显 无风扇的ARM通信管理平台

ƒ 飞腾 FT-2000/4 和 D2000/8 主控制器&#xff0c;主频 2.3~2.6GHz ƒ 8 个千兆网口 , 8 个全功能隔离串口 ƒ HDMIVGA 双显示接口 ƒ 3 个 USB2.0, 2 个 USB3.0 ƒ 支持 2 组 SATA 硬盘存储 ƒ 支持 CAN 通讯 ( 替换 4 路或 8 路 COM) ƒ 整机无风扇散热设计 …...

如何将C#程序打包成软件绿色包

文章目录 前言步骤如下&#xff1a;总结 前言 在实际工作中&#xff0c;很多时候会开发一些特别小的工具&#xff0c;当这些工具需要发给别人用时&#xff0c;不值当的打个安装包&#xff0c;最适合做一个绿色包&#xff0c;别人拿到后&#xff0c;直接双击exe就可以用。 步骤…...

实验三 数据查询

一、【实验教学 1、掌握单表查询。 2、掌握多表查询。 二、【实验教学的基本要求】 1、掌握SQL程序设计基本规范&#xff1b; 2、熟练运用SQL实现数据基本查询&#xff0c;包括单表查询、分组统计查询和连接查询&#xff1b; 3、理解和掌握SQL查询语句中各个子句的特点和…...

关于串口读写NAND闪存的用法

在嵌入式系统中&#xff0c;nand 命令通常用于操作和管理 NAND 闪存子系统&#xff0c;特别是在引导加载程序&#xff08;如 U-Boot&#xff09;中。NAND 闪存是一种非易失性存储设备&#xff0c;广泛用于嵌入式设备中&#xff0c;用于存储操作系统、应用程序、配置文件等数据。…...

C++:实现线程池

线程池&#xff08;Thread Pool&#xff09;是一种多线程处理方式&#xff0c;用于管理和复用多个线程&#xff0c;以提高程序的并发性能并避免频繁创建和销毁线程所带来的开销。 基本概念&#xff1a; 线程池维护着若干个已创建好的线程&#xff0c;当有任务需要执行时&…...

本地运行qwen3:30b-a3b速度测试

仍然使用的是ollama&#xff0c;运行的Q4_K_M量化版。 这个模型在相同硬件环境下对比我电脑上其他32b的模型速度&#xff08;小于3 tokens/s&#xff09;提升非常明显&#xff0c;并且可以设置是否打开思考模式。 注意&#xff1a; /no_think前有个空格 非思考模式&#xff1…...

keil+vscode+腾讯ai助手

嵌入式软件开发 这个是之前一直想写的开发方式&#xff0c;不过上份工作一直在忙&#xff0c;没有抽出时间花在上面&#xff0c;现在空下来好好写一写吧&#xff01;标题软件安装 关于VSCode以及Keil的安装可以在以下链接中点击浏览 VSCode安装 Keil5安装 CubeMx安装 插件下…...

通过TinyML为语音助手赋能,推动以用户为中心的创新和现实世界应用

英文标题&#xff1a;Empowering voice assistants with TinyML for user-centric innovations and real-world applications 中文标题&#xff1a;通过TinyML为语音助手赋能&#xff0c;推动以用户为中心的创新和现实世界应用 作者信息 Sireesha Chittepu1, Sheshikala Mart…...

学习Python网络爬虫的实例

30岁程序员学习Python的第二天之网络爬虫的练习实例 爬取软科2025年中国大学排名 思路&#xff1a; 1、百度查到到网页地址&#xff1a;https://www.shanghairanking.cn/rankings/bcur/2025 2、编写爬取代码&#xff0c;具体步骤分3步&#xff0c;第一步通过requests库爬取网…...

雨云游戏云MCSM面板服使用教程我的世界Forge服务端开服教程

雨云 - 新一代云服务提供商 雨云面板服目前支持一键开服的游戏有&#xff1a;Minecraft Java版、Minecraft 基岩版、泰拉瑞亚、饥荒&#xff0c;还提供纯Java/Linux环境&#xff08;Docker&#xff09;&#xff0c;方便开自己开其他游戏服。 其中Minecraft Java版支持一键开…...

关于loadstartcode使用

loadstartcode 命令用于从 TFTP 服务器下载一个名为 startcode 的文件。这个命令通常用于将启动代码&#xff08;如引导加载程序或内核启动映像&#xff09;从 TFTP 服务器加载到设备内存中。它是嵌入式设备和网络设备&#xff08;如路由器&#xff09;常见的命令&#xff0c;通…...

Linux死锁实验分析与总结

三、实验结果截图及分析 1. 实验代码 #include <pthread.h> #include <stdio.h> #include <unistd.h>pthread_mutex_t mutex1 PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t mutex2 PTHREAD_MUTEX_INITIALIZER;void* producer(void* arg) {while (1) {pth…...

【计网】ipconfig、ping、arp、tracert

目录 ipconfig ping arp tracert cmd ipconfig ipcofig -all IPv4 物理地址 ping 检测网络连通情况&#xff0c;分析网络速度 根据域名得到服务器IP 根据TTL判断对方所使用的操作系统以及数据包经过路由器数量 byte数据包大小 time响应时间 TTLDNS记录在DNS服务器上存在…...

当手机开始预判你的下一步:一场正在颠覆生活的AI静默革命

当手机开始预判你的下一步&#xff1a;一场正在颠覆生活的AI静默革命 深夜加班时&#xff0c;手机自动调暗屏幕亮度&#xff1b;出差途中&#xff0c;智能音箱提前预定好常去的酒店&#xff1b;打开购物APP&#xff0c;推荐清单里躺着昨天刚在聊天中提到的商品——这些场景背后…...

【SDRS】面向多模态情感分析的情感感知解纠缠表征转移

abstract 多模态情感分析(MSA)旨在利用多模态的互补信息对用户生成的视频进行情感理解。现有的方法主要集中在设计复杂的特征融合策略来整合单独提取的多模态表示,忽略了与情感无关的信息的干扰。在本文中,我们提出将单模表征分解为情感特定特征和情感独立特征,并将前者融…...

C++ 中的静态链接和动态链接详解

目录 一、什么是链接&#xff1f; 链接分为两类&#xff1a; 二、静态链接&#xff08;Static Linking&#xff09; 特点&#xff1a; 优点&#xff1a; 缺点&#xff1a; 使用方式&#xff1a; 三、动态链接&#xff08;Dynamic Linking&#xff09; 特点&#xff1a; 优…...

426、N叉树的层序遍历

输入检查&#xff1a; if not root:return [] 如果根节点为空&#xff0c;直接返回空列表 初始化&#xff1a; result [] queue collections.deque([root]) result用于存储最终结果queue初始化包含根节点&#xff0c;使用双端队列实现 主循环&#xff1a; while queue:leve…...

雅思阅读--重点短语/句式39个

文章目录 1. according to2. regardless of3. make/keep/leave + n. + adj.leave us stronger1. according to “according to(根据)”。 德国著名数学家 David Hilbert(大卫希尔伯特)说过: Mathematics is a game played according to certain simple rules with meanin…...

探索开源大模型体系:当今AI的引领者

目录 1. Hugging Face Transformers 2. OpenAI GPT 3. DeepSpeed 4. Megatron-LM 5. AllenNLP 总结 在当今人工智能的迅猛发展中&#xff0c;大模型&#xff08;Large Model&#xff09;已经成为了AI领域的核心。与传统的机器学习模型相比&#xff0c;大模型在自然语言处…...

n8n系列(1)初识n8n:工作流自动化平台概述

1. 引言 随着各类自动化工具的涌现,n8n作为一款开源的工作流自动化平台,凭借其灵活性、可扩展性和强大的集成能力,正在获得越来越多技术团队的青睐。 本文作为n8n系列的开篇,将带您全面了解这个强大的自动化平台,探索其起源、特性以及与其他工具的差异,帮助您判断n8n是否…...

n8n 与智能体构建:开发自动化 AI 作业的基础平台

n8n 是一款开源的自动化流程构建平台&#xff0c;通过其模块化节点系统&#xff0c;开发者可以快速实现跨平台的任务编排、数据集成与智能交互。当 n8n 与大型语言模型&#xff08;LLM&#xff09;结合时&#xff0c;就能构建出具备感知、推理、执行能力的 AI 智能体&#xff0…...

大模型主干

1.什么是语言模型骨架LLM-Backbone,在多模态模型中的作用&#xff1f; 语言模型骨架&#xff08;LLM Backbone&#xff09;是多模态模型中的核心组件之一。它利用预训练的语言模型&#xff08;如Flan-T5、ChatGLM、UL2等&#xff09;来处理各种模态的特征&#xff0c;进行语义…...

大模型在宫颈癌诊疗全流程预测与应用研究报告

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、大模型预测宫颈癌术前风险 2.1 术前数据收集与预处理 2.2 预测模型构建与算法选择 2.3 术前风险预测指标与案例分析 三、大模型辅助制定术中方案 3.1 术中风险动态监测与预测 3.2 基于预测的手术方案优化…...

Diffusion Transformer(DiT)

扩散模型的核心思想&#xff1a;Diffusion Models是一种受到非平衡热力学启发的生成模型&#xff0c;其核心思想是通过模拟扩散过程来逐步添加噪声到数据中&#xff0c;并随后学习反转这个过程以从噪声中构建出所需的数据样本。 DiT的架构&#xff1a;DiT架构基于Latent Diffu…...

多模态理论知识

说一下多模态的定义? 多模态是指使用多种不同类型的媒体和数据输入&#xff0c;例如文本、图像、音频、视频等&#xff0c;它们之间存在关联或者对应关系。 这些不同类型的媒体和数据输入可以在不同的层面上传达信息并表达意义。多模态数据的处理需要融合不同类型的信息&…...

Nginx 安全防护与HTTPS部署

目录 一、核心安全配置 1、隐藏版本号 2、限制危险请求方法 3、请求限制&#xff08;CC攻击防御&#xff09; &#xff08;1&#xff09;使用Nginx的limit_req模块限制请求速率 &#xff08;2&#xff09;压力测试验证 4、防盗链 &#xff08;1&#xff09;修改 Window…...

Python爬虫+代理IP+Header伪装:高效采集亚马逊数据

1. 引言 在当今大数据时代&#xff0c;电商平台&#xff08;如亚马逊&#xff09;的数据采集对于市场分析、竞品监控和价格追踪至关重要。然而&#xff0c;亚马逊具有严格的反爬虫机制&#xff0c;包括IP封禁、Header检测、验证码挑战等。 为了高效且稳定地采集亚马逊数据&am…...

效率提升利器:解锁图片处理新姿势

今天我给大家分享一款超实用的图片压缩软件&#xff0c;好用程度超出想象&#xff01;该软件身形 “轻盈”&#xff0c;仅 648KB&#xff0c;启动后能迅速上手。 01 软件介绍 这款软件就是PicSizer&#xff0c;具有以下特点&#xff1a; 支持windows系统 体积小&#xff0c;绿…...

【强化学习】什么是强化学习?2025

1. 强化学习简介 一句话总结&#xff1a;强化学习&#xff08;Reinforcement Learning, RL&#xff09;是一种机器学习范式&#xff0c;强调智能体&#xff08;agent&#xff09;通过与环境&#xff08;environment&#xff09;的交互&#xff0c;以试错&#xff08;trial‑an…...

富文本编辑器的第三方库ProseMirror

如果0-1的开发一个富文本编辑器&#xff0c;成本还是非常高的&#xff0c;里面很多坑要踩&#xff0c;市面上很多库可以帮助我们搭建一个富文本编辑器&#xff0c;ProseMirror就是其中最流行的库之一。 认识ProseMirror ProseMirror 提供了一套工具和概念&#xff0c;用于构建…...