当前位置: 首页 > 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.dtcms.com/a/323351.html

相关文章:

  • 小米开源大模型 MiDashengLM-7B:不仅是“听懂”,更能“理解”声音
  • B.10.01.5-电商系统的设计模式应用实战
  • 制作浏览器CEFSharp133+X86+win7 之 javascript交互(二)
  • Javaweb - 14.1 - 前端工程化
  • 从依赖外部提示的显式思维链(CoT),到内部自洽的内化推理(Internalized Reasoning)
  • ConcurrentHashMap源码详解
  • 虚拟手机号工具使用
  • 年轻新标杆!东方心绣脸韧带年轻技术升级发布
  • 基于大语言模型的智能问答系统研究
  • 谷歌官方性能文档:Android 动态性能框架优化Performance Hint API
  • Go 实用指南:如何执行 Skyline 查询(Pareto 最优点筛选)
  • [激光原理与应用-201]:光学器件 - 增益晶体 - 概述
  • Dell PowerEdge: Servers by generation (按代系划分的服务器)
  • leetcode 283. 移动零 - java
  • 【12】 神经网络与深度学习(下)
  • [激光原理与应用-204]:光学器件 - LD激光二极管工作原理以及使用方法
  • 网络超时处理与重试机制:Go最佳实践
  • 【R语言】多样本单细胞分析_SCTransform+Harmony方案(2)
  • Q-learning强化算法万字详解
  • 【工作流引擎】Flowable 和 Activiti
  • 《算法导论》第 15 章 - 动态规划
  • Python大数据分析——AdaBoost、GBDT、SMOTE与XGBoost算法模型
  • Slab 算法浅析
  • go数据处理之textproto.Pipeline
  • 词向量基础:从独热编码到分布式表示的演进
  • BeanDefinition 与 Bean 生命周期(面试高频考点)
  • 第十九天-输入捕获实验
  • 第十四届蓝桥杯青少年组省赛 编程题真题题解
  • 内存+磁盘混合存储数据库——平衡设备的“快”与“稳”
  • drippingblues靶机教程