【c++初阶】命名空间的定义

news2024/10/5 1:13:18

命名空间的定义

  • 一.缺陷
  • 二.namespace和::
  • 三.访问namespace
  • 四.一些注意
    • 1.工程里标准库的展开
    • 2.命名域的小技巧

一.缺陷

在c语言中,如果我们同时定义一个全局变量和一个局部变量并且使用同一个名称的话,是可以编过的(因为全局和局部是属于两个不同作用域)。但会优先使用局部变量,这样的话在c语言中我们是无法直接访问全局变量a的。

在这里插入图片描述

在c++里自然也会有这种冲突,为了解决这个缺陷,c++定义了关键字namespace和操作符::来解决这个问题。

二.namespace和::

首先介绍一下::的使用。::是一个双目操作符,前面代表要访问的域,后面是要访问的变量。(因为全局的域就是空白,所以::前面是空白)

在这里插入图片描述

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

在这里插入图片描述

那么在定义了一个自定义域后它计算机的访问方式是怎么样的呢?

实际上它的访问方式是局部域->全局域->自定义命名空间。但需要注意的是如果不访问命名空间,那么命名空间里的定义是不会被访问的。

在这里插入图片描述

三.访问namespace

访问namesp有以下两种方式:

1.展开命名空间

在这里插入图片描述

2.指定访问命名空间域

在这里插入图片描述

四.一些注意

1.工程里标准库的展开

我们经常会在一些较小的程序里写以下代码。

在这里插入图片描述

这是因为c++里的标准库(包括STL)都是用一个命名域所包含的,为了使用库函数,我们得首先展开命名域。std就是标准库库函数的命名域,当然我们也可以如下写:(使用域限制符号)

在这里插入图片描述

这样写毫无疑问要复杂许多,所以 一般不用这种写法。

上面直接展开所以标准库函数实际上是有隐患的,特别是在写的工程很大时,我们会很容易与库函数造成重命名的错误,为了解决这个问题,在工程中常常如下写:

在这里插入图片描述

我们只展开常用的部分,这样就可以避免重命名。

2.命名域的小技巧

1.命名域可以进行嵌套

在这里插入图片描述

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

在这里插入图片描述

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

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

相关文章

云原生_kubernetes(k8s)_pod介绍以及配置信息说明

目录 一、Pod介绍 1、Pod结构 2、Pod定义 二、Pod配置 1、基本配置 2、镜像拉取 3、启动命令 4、环境变量 5、端口设置 6、资源配额 一、Pod介绍 1、Pod结构 每个Pod中都可以包含一个或者多个容器,这些容器可以分为两类: 用户程序所在的容器&…

网络编程(第二章: TCPUDP基础模型)

TCP/UDP(服务器、客户端源码) [(12条消息) 网络编程(4.7作业)(TCP/UDP源代码)_m0_37565374的博客-CSDN博客]: 一. 套接字 socket 1.概念 最早的socket和消息队列、共享内存,管道一致只能实现一台主机中的多个进程间通信。后期加入了TCP/I…

云日记个人中心项目思路

验证昵称的唯一性 前台: 昵称文本框的失焦事件 blur 1. 获取昵称文本框的值 2. 判断值是否为空 如果为空,提示用户,禁用按钮,并return 3. 判断昵称是否做了修改…

一文详解:linux部署jenkins,一键构建并部署springboot至第三方服务器

目录 1、下载jenkins 2、 启动jenkins 3、访问jenkins 4、在当前Linux上安装maven 4.1、更新wget命令,支持https请求 4.2、下载maven 4.3、解压安装maven 4.4、配置maven环境变量 4.5、maven配置阿里云镜像 4.6、配置maven依赖下载的位置 5、Linux安装Gi…

Redis的使用【Redis】

一、缓存简介 缓存简介 二、缓存分类 缓存分类 三、常见缓存 常见缓存 四、Redis使用 Redis 有 5 ⼤基础数据类型: String——字符串类型Hash——字典类型List——列表类型Set——集合类型ZSet——有序集合类型 其中最常⽤的是字符串和字典类型。 1.字符…

Vulnhub靶场DC-1练习

目录0x00 准备0x01 主机信息收集0x02 站点信息收集0x03 漏洞查找与利用0x00 准备 下载链接:https://download.vulnhub.com/dc/DC-1.zip 介绍:There are five flags in total, but the ultimate goal is to find and read the flag in root’s home dir…

常见的DNS攻击与防御

DNS查询通常都是基于UDP的,这就导致了在查询过程中验证机制的缺失,黑客很容易利用该漏洞进行分析。DNS服务可能面临如下DNS攻击风险: 黑客伪造客户端源IP地址发送大量的DNS请求报文,造成DNS request flood攻击。黑客伪造成授权服…

Node.js安装与配置步骤

前言一、安装Node.js1.下载2.安装3.添加环境变量二、验证是否安装成功三、修改模块下载位置1.查看npm默认存放位置2.在 nodejs 安装目录下,创建 “node_global” 和 “node_cache” 两个文件夹3.修改默认文件夹4.测试默认位置是否更改成功四、设置淘宝镜像1.将npm默…

ARM Linux 内核启动2 ——C语言阶段

一、内核启动的C语言阶段 1 1、这一块的学习思路 (1) 抓大放小,不深究。 (2) 感兴趣可以就某个话题去网上搜索资料学习。 (3) 重点局部深入分析。 2、具体学习方法 (1) 顺着代码执行路径抓全。这是我们的学习主线。 (2) 对照内核启动的打印信息进行分析。 3、…

Ansible批量部署采集器

千台服务器部署采集器的时候用到了 Ansible,简单记录一下。 安装 Ansible pip install ansible yum install ansible –y在 /etc/ansible/hosts 中添加被管理组 ,比如图中[web] 是组的名字。 执行ansible命令测试,通过hosts中定义的web组执…

君子签「数据签」正式上线,推动企业电子合同实现高效安全签署

近年来,从政府机关到企事业单位,数字化转型步伐明显加快。 在数字化的驱动下,在各行业的服务过程中,君子签对产品部署有了更深的沉淀和经验,通过不断打磨、升级产品,「数据签」产品于近日正式上线&#xf…

Word这样用,提高效率不加班

Word这样用,提高效率不加班 今天给大家分享23条Word文档的应用小技巧。对于大家来说,掌握些技巧能够效率百倍,何乐不为? 这些技巧是本人通过整理一直在用并且使用频率较高的,也希望能帮到大家。有兴趣的小伙伴可以自己…

Python | 基于LendingClub数据的分类预测研究Part01——问题重述+特征选择+算法对比

欢迎交流学习~~ 专栏: 机器学习&深度学习 本文利用Python对数据集进行数据分析,并用多种机器学习算法进行分类预测。 具体文章和数据集可以见我所发布的资源:发布的资源 Python | 基于LendingClub数据的分类预测研究Part01——问题重述特…

多路I/O转接 Epoll

基本概述 epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为它会复用文件描述符集合来传递结果而不用迫使开发者每次等待事件之前都必须重新准备要被监听的文件描述符集合…

从输入url到页面展现(二)找服务器其实是在找IP地址

前言 前一节我们讲述了url的规则,url的几种类型,以及访问web服务器的时候,如果用户访问的url如果不包含index.html的话,大概会如何去寻找这个url对应的文件,如果感兴趣的同学可以回头去看上一篇:从输入url…

PyTorch中的可视化工具

目录 一、网络结构的可视化 1.1 通过HiddenLayer可视化网络 1.2 通过PyTorchViz可视化网络 二、训练过程可视化 2.1 通过tensorboardX可视化训练过程 2.2 HiddenLayer可视化训练过程 三、使用Visdom进行可视化 一、网络结构的可视化 我们训练神经网络时,除…

xshell是什么软件

xshell是什么软件? Xshell 是一个强大的远程管理软件,它支持SSH,TELNET 协议。Xshell可以在Windows下访问远端服务器、路由器、网络机顶盒等,类似的常用软件还有putty,以及Windows下的Telnet。 下面简单介绍一下xshell软件。 X…

康耐视Designer,通过VC5与三菱Q系列PLC-SLMP通讯说明

测试使用软件版本 Designer Version: 2.7 GX Works2 Version: 1.77F 测试使用硬件 Cognex Vision Controller VC5 CIC-5000R Mitsubishi PLC: Q06UDEHCPU PLC端设置(内置以太网口型号) 1.新建一个工程,选择对应的PLC系列和PLC类型: 2.PLC参数设置(以太网设置):…

LabVIEW-数值控件和布尔控件

简介 LabVIEW 以其强大、开放、图形化的虚拟仪器软件开发环境使得无论是否有过编程经验的工程师或科学家使用它时都可以快速、高效地与测量和控制硬件通信,并进行复杂的数据分析及处理。LabVIEW集成了满足GPIB、PXI、VXI、RS232、RS485、USB、DAQ等多种形式的设备互…

MATLAB算法实战应用案例精讲-【自动驾驶】激光雷达LiDAR(补充篇)

目录 前言 几个高频面试题目 自动驾驶中的传感器:LiDAR和 Radar的区别 LiDAR Radar 性能对比 激光雷达中是如何做到和GPS时间同步的? 一、三种方案PPSGPRMC、PTP、gPTP 二、同步过程 算法原理 发展历程 国内外厂商 算法思想 测距 三角测…