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

【和春笋一起学C++】(三十三)名称空间的其他特性

目录

嵌套式名称空间

拓展——未命名的名称空间


嵌套式名称空间

示例代码1:

namespace electronicEquipment
{namespace computer{double price = 4999.0;string modelNumber;string name;}namespace ElectronicWatch{double price = 99.0;string modelNumber;string name;}int equipmentNumber;
}

如果要使用computer名称空间中名称,则需要使用的using编译指令为:

using namespace electronicEquipment::computer;

在名称空间中使用using编译指令,示例程序2:

#include <iostream>
#include <string>
using namespace std;namespace book
{double price = 19.9;std::string series;std::string name;
}namespace electronicEquipment
{using namespace book;namespace computer{double price = 4999.0;string modelNumber;string name;}namespace ElectronicWatch{double price = 99.0;string modelNumber;string name;}int equipmentNumber;
}int main()
{using namespace electronicEquipment;double a= price;cout << "a=" << a << endl;return 0;
}

main()函数输出结果为19.9,输出的是名称空间book中的price。

说明:using编译指令是可传递的。如果A op B且B op C,如果A op C成立,那么我们说操作op是可传递的。例如:大于操作符是可传递的,因为A>B,B>C,则A>C成立。

所以当electronicEquipment名称空间中包含了名称空间book,且book名称空间中又有price,则相当于electronicEquipment名称空间包含了名称price,因此输出的price是book名称空间中的。

由于名称空间electronicEquipment的声明中添加了使用book名称空间的编译指令,因此,编译指令using namespace electronicEquipment;和下面两条语句等价。

using namespace electronicEquipment;
using namespace book;

拓展——未命名的名称空间

可以通过省略名称空间的名称来创建未命名的名称空间,例如,将示例程序2中的book名称空间名称空间名省略。

namespace
{double price = 19.9;std::string series;std::string name;
}

当省略名称空间名后,该名称空间中的名称的作用域为:从声明点到该声明区域末尾,从这一点看,它与全局变量相似。但是由于没有名称空间名,它无法显式的使用using编译指令来使它在其他地方可用,即它无法在其他文件中使用。因此,这种方法只能替代链接性为内部的静态变量。(事实上,最新的C++标准中已经指出不赞成在名称空间和全局作用域中使用关键字static,虽然目前合法,但以后的修订标准很可能视为非法)

http://www.lryc.cn/news/614974.html

相关文章:

  • C++安全异常设计
  • 可泛化双手操作机器人基准测试:CVPR 2025 MEIS 研讨会 RoboTwin 双臂协作挑战赛
  • 【渲染流水线】[几何阶段]-[图元装配]以UnityURP为例
  • 第15届蓝桥杯Scratch选拔赛初级及中级(STEMA)2024年1月28日真题
  • Leetcode-19. 删除链表的倒数第 N 个结点
  • ORA-600 kcratr_nab_less_than_odr和ORA-600 4194故障处理---惜分飞
  • 莫比乌斯反演学习笔记
  • FFMPEG将H264转HEVC时,码率缩小多少好,以及如何通过SSIM(Structural Similarity Index结构相似性指数)衡量转码损失
  • PDF编辑工具,免费OCR识别表单
  • .htaccess 文件上传漏洞绕过总结
  • springBoot集成easyExcel 实现文件上传
  • linux安装php
  • 模板引擎art-template
  • 深入剖析Spring MVC核心原理:从请求到响应的魔法解密
  • AI 算法优化实战指南:从理论到部署的全流程优化策略
  • K-means聚类学习:原理、实践与API解析
  • 从反射到方法句柄:深入探索Java动态编程的终极解决方案
  • 从零玩转Linux云主机:免费申请、连接终端、命令速查表
  • 灾后食物能源协调供应优化模型
  • 《算法导论》第 15 章 - 动态规划
  • 基于开源AI大模型、AI智能名片与S2B2C商城小程序的学习型社群构建与运营模式创新研究
  • rem:CSS中的相对长度单位
  • IntelliJ IDEA 新手全方位使用指南
  • 网站站长如何借助php推送示例提交网站内容加速百度收录?
  • webwork的学习
  • 7天精通Coze智能体实操手册(Day 1)
  • Go语言实战案例:表单提交数据解析
  • Express中间件和路由及响应方法
  • golang的二维数组
  • vulnhub-Beelzebub靶场通关攻略