【C++初阶】(入门)命名空间

news2025/6/18 23:01:37

在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染namespace关键字的出现就是针对这种问题的。

文章目录

  • 前言
  • ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
  • 👻一、什么时候使用命名空间?
  • 👻二、 命名空间的定义
  • 👻三、 命名空间的使用
  • 👻补充
  • 👻总结
  • ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨


前言

回顾一下关键字

关键字(keyword)属于保留字,是整个语言范围内预先保留的标识符。每个C++关键字都有特殊的含义。经过预处理后,关键字从预处理记号(preprocessing-token)中区别出来,剩下的标识符作为记号(token),用于声明对象、函数、类型、命名空间等。不能声明与关键字同名的标识符。 ------------百度百科

在这里插入图片描述


✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨

👻一、什么时候使用命名空间?

当使用rand而并没有引头文件时

在这里插入图片描述
全局变量rand与局部变量rand同时存在,根据就近原则,此时编译器是打印局部变量里的rand。此时变量rand还是可以正常打印的;

当使用rand而并引头文件#include<stdlib.h>时

在这里插入图片描述
此时,编译报错,“rand”: 重定义;以前的定义是“函数”,这就是因为这里定义的rand与库里的函数发生冲突了。
要想解决这个问题,namespace就派上用场了


👻二、 命名空间的定义

需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。
例如:

namespace L
{
	int rand=8;
}

命名空间可以定义变量/函数/类型,也可以嵌套定义命名空间
例如:

namespace L
{
	int rand=8;

	int add(int x,int y)
	{
		return x+y;
	}

	struck app
	{
		int w;
	};
}

同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。


👻三、 命名空间的使用

一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中

命名空间的使用有三种方式:
1.加命名空间名称及作用域限定符
在这里插入图片描述
“ ::”全区域访问

2.使用using将命名空间中某个成员引入
在这里插入图片描述
将命名成员部分展开

3.使用using namespace 命名空间名称 引入
在这里插入图片描述
这里使用using namespace 命名空间名称 引入时,这里的本意是把命名空间里定义的变量暴露在全局中;
但是这种方法,可能会导致与原有的全局变量冲突,所以不要轻易使用这种方法;


👻补充

当定义的变量在局部域、全局域和命名空间域都有时,编译器编译的顺序是局部域->全局域->命名空间域
在这里插入图片描述


👻总结

以上就是今天要讲的内容,本文仅仅简单介绍了命名空间,并介绍了它的定义与使用;

✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/426561.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【文章学习系列之模型】FEDformer

本章内容文章概况模型流程主要结构Frequency Enhanced Decomposition Architecture&#xff08;频率增强分解结构&#xff09;Fourier enhanced blocks and Wavelet enhanced blocks&#xff08;傅里叶增强模块和小波增强模块&#xff09;Fourier Enhanced Structure&#xff0…

基于Segment anything的实例分割半自动标注

介绍 使用Meta AI的SAM,并添加了一个基本界面来标记图像,并保存COCO格式的掩码。 源码 https://github.com/anuragxel/salt 安装 安装SAM;创建conda虚拟环境,使用conda env create -f environment.yaml;安装coco-viewer来快速可视化标注结果。使用方法 1、将图片放入到…

WSL下的Kafka开发容器:Docker搭建、API、整合

背景介绍 Kafka是一个分布式流处理平台&#xff0c;可以处理大规模数据流并支持实时数据流的处理。 本文介绍了如何在WSL下使用Docker搭建Kafka容器&#xff0c;并使用Python的kafka-python库和FastAPI框架实现了一个简单的API。同时&#xff0c;还将该服务整合到一个整体的d…

ssm异常处理

ssm异常处理 类上和方法上都要有注解&#xff1a; 类上的注解&#xff1a; 异常处理用到的注解&#xff0c;里面包含了其他的一些必须的注解&#xff0c;详解看下图 方法上的注解&#xff1a; 上面的要懂打配合 现在创建一个处理异常的工具类&#xff0c;加上前面提到的注…

CSRF与SSRF比较

CSRF与SSRF比较 参考&#xff1a;简述CSRF、SSRF的区别 CSRF CSRF&#xff0c;全名 Cross-site requestforgery&#xff0c;也就是 跨站请求伪造。XSS是跨站脚本攻击。与XSS比较&#xff0c;XSS攻击是跨站脚本攻击&#xff0c;CSRF是跨站请求伪造&#xff0c;也就是说CSRF攻…

【Redis】入门篇之相关概念与Redis的安装

目录 一、关系型数据库与非关系型数据库 1、非关系数据库的种类 2、关系型数据库与非关系型数据库的区别 二、认识Redis 1、概念 2、特点 1.键值型 2.单线程 3.低延迟、速度快 4.支持数据持久化 5.支持主从集群、分片集群 6.支持多语言客户端 三、Redis的安装 1、…

IO-IO基础

简介 IO流&#xff0c;以计算机内存为主体&#xff0c;从内存到网络/磁盘等其他地方叫输出流(内存往外出)&#xff1b;网络/磁盘等其他地方写到内存叫输入流&#xff08;往内存输入&#xff09;。 Java中的IO流 4个抽象基类 InputStream/Reader(读到内存里) 所有的输入流的基…

环境变量详解

目录 环境变量是什么&#xff1f; 常见环境变量 查看环境变量 指令查看 代码查看 系统调用查看 本地变量 环境变量全局性 环境变量是什么&#xff1f; 我们要执行一个我们所写的c/c程序时&#xff0c;需要./可执行文件&#xff0c;告诉操作系统你在哪里&#xff0c…

PC Cleaner Pro(电脑清理工具)图文安装教程

OneSafe PC Cleaner 会查找并删除垃圾文件和快捷方式&#xff0c;这些文件和快捷方式会随着时间的推移在您的 PC 上堆积&#xff0c;从而占用您的硬盘空间。该软件会搜索并删除已卸载程序留下的无效快捷方式和文件。OneSafe PC Cleaner 还会识别并删除注册表中不必要的条目。 W…

YOLOv8详解代码实战,附有效果图

YOLOv8架构 YOLOv8 是 ultralytics 公司在 2023 年 1月 10 号开源的 YOLOv5 的下一个重大更新版本&#xff0c;目前支持图像分类、物体检测和实例分割任务&#xff0c;鉴于Yolov5的良好表现&#xff0c;Yolov8在还没有开源时就收到了用户的广泛关注。yolov8的整体架构如下&…

vue3计算属性与监视及watchEffect函数

computed计算属性 首先看一下页面的结构 在v3中可以用v2的方式来写计算属性&#xff0c;但是不建议这么写 而想要在v3中使用计算属性&#xff0c;需要先引入它 它不想之前在v2中的函数了&#xff0c;而是要写在computed()里面 当然这个计算属性是简写&#xff08;没有考虑计算…

Python opencv 先腐蚀后膨胀 消除图像噪声

cv2.getStructuringElement()介绍 在进行图像形态学操作时&#xff0c;首先需要构造一个特定的核&#xff0c;该核可以自定义生成&#xff0c;也可以通过cv2.getStructuringElement()函数构造。 cv2.getStructuringElement(shape, ksize)参数&#xff1a; shape ---- 代表形状…

常见在线AI绘画平台

系列文章目录 Midjourney AI绘画工具使用保姆级教程 本地部署Stable Diffusion教程&#xff0c;亲测可以安装成功 Stable Diffusion界面参数及模型使用 文章目录系列文章目录前言一、Midjourney二、DreamStudio三、Lexica四、STOCKIMG.AI五、Dream by WOMBO六、PicSo七、百…

ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升环境、生态、水文、土地、土壤、农业、大气等领域的数据分析

查看原文>>>ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升环境、生态、水文、土地、土壤、农业、大气等领域的数据分析 目录 专题一、空间数据获取与制图 专题二、ArcGIS专题地图制作 专题三、空间数据采集与处理 专题四、遥感数据处理与应用 专题五、DEM数据…

macOS Big Sur 11.7.6 (20G1231) Boot ISO 原版可引导镜像

本站下载的 macOS 软件包&#xff0c;既可以拖拽到 Applications&#xff08;应用程序&#xff09;下直接安装&#xff0c;也可以制作启动 U 盘安装&#xff0c;或者在虚拟机中启动安装。另外也支持在 Windows 和 Linux 中创建可引导介质。 2023 年 4 月 10 日&#xff08;北京…

压力测试工具JMeter的下载安装与基础使用(一)

JMeter的下载安装与基础使用1.环境准备2.下载与配置2.1下载并解压2.2 配置系统变量 JMETER_HOME2.3配置系统变量 CLASSPATH3.测试JMeter是否配置成功4. 语言修永久修改为中文&#xff08;可选&#xff09;1.环境准备 JMeter是用java开发的&#xff0c;示例Apache JMeter5.5版本…

css动画及背景设置

css属性 clip-path 属性使用裁剪方式创建元素的可显示区域。区域内的部分显示&#xff0c;区域外的隐藏。可以指定一些特定形状。 可以创建多边形内容显示区域polygon clip-path: polygon(0 0, 100% 0, 100% 75vh 0 100%); 顺序 1初始x y 为0 0 1向2位置 x轴移动100% y移…

SpringBoot集成elasticsearch使用(增删改查)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 SpringBoot集成elasticsearch使用&#xff08;增删改查&#xff09;一、es是什么&#xff1f;二、使用步骤1.搭配环境springboot集成es1、新建springboot项目&#xff0c;引入…

19_I.MX6ULL_SPI实验

目录 SPI简介 I.MX6U ECSPI简介 相关寄存器 ICM-20608简介 实验源码 SPI简介 同I2C一样,SPI是很常用的通信接口,也可以通过SPI来连接众多的传感器。相比I2C接口, SPI接口的通信速度很快, I2C最多400KHz,但是SPI可以到达几十MHz。I.MX6U也有4个SPI接口,可以通过这4个SPI接…

电感为什么会有饱和电流

电感有一个重要的参数那就是饱和电流&#xff0c;饱和电流的定义是当电感感值下降30%时流过电感的电流。 那么电感为什么会有饱和电流呢&#xff1f; 这个是电感磁芯的磁化曲线&#xff0c;横坐标是磁场强度H&#xff0c;纵坐标是磁感应强度B 在磁场强度较小的时候&#xff0c;…