C++ namespace详细介绍
编写程序过程中,名称(name)可以是符号常量、变量、函数、结构、枚举、类和对象等等。工程越大,名称互相冲突性的可能性越大。另外使用多个厂商的类库时,也可能导致名称冲突。为了避免,在大规模程序的设计中,以及在程序员使用各种各样的 C++ 库时,这些标识符的命名发生冲突,标准 C++ 引入关键字 namespace(命名空间/名字空间/名称空间),可以更好地控制标识符的作用域。
例如,我们在 C 语言中,通过 static 可以限制名字只在当前编译单元内可见,在 C++ 中我们通过 namespace 来控制对名字的访问。
- namespace 语法
- namespace 中可定义常量、变量、函数、结构体、枚举、类等
- namespace 只能在全局定义。
- namespace 支持嵌套定义。
- namespace 是开放的,可随时添加新的成员。
- namespace 关键字可以为已有空间名字增加别名
- 无名命名空间意味着命名空间中的符号只能在本文件中访问,相当于给符号增加了 static 修饰。推荐了解
1.1 namespace 可包含的成员
1.2 namespace 只能在全局定义
1.3 namespace 支持嵌套定义
名字空间 my_space 中可以嵌套定义子名字空间 my_sub_space.
1.4 namespace 是开放的,随时可添加成员
1.5 namespace 为已有空间名字创建别名
1.6 namespace 匿名名字空间
无名命名空间意味着命名空间中的符号只能在本文件中访问,相当于给符号增加了 static 修饰,只能在当前文件内访问。
2. 使用 namespace 中符号
使用名字空间中定义的符号有三种方式:
- 直接通过 namespace 作用域访问
- using 声明指定某个符号在某个作用域下可见
- using 编译指令指定名字空间中所有符号在在某个作用域下可见
2.1 直接访问
2.2 using 声明
using 声明指定某个符号在某个作用域下可见。例如:
2.3 using 编译指令
using 编译指令指定名字空间中所有符号在在某个作用域下可见。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
第一节 java开发环境
前言 本地要开发java要下载并安装jdk,jdk是开发环境+运行环境,jre是运行环境,jdk 包含jre。 安装jdk 1.下载jdk1.8作为案例,下载更多请求jdk官网下载。 2.jdk1.8 提取码:2siz 3.jdk1.7提取码:k66a 4.jdk11提取码:x3ay 5.点击jdk.exe安装,安装过于简单不做阐述。 名词解释 JRE: Java Runtime Environment Java运行环境 JDK: Java Development Kit Java开发工具包 JDK = JRE + API(Application Interface) JVM:Java Visual Machine Java虚拟机 JRE=JVM+java核心类库 java版本 标准版 JavaSE 手机版 JavaMe 企业版 JavaEE 环境变量配置 1.右击"我的电脑",点击"属性",选择"高级系统设置"; 2.选择"高级"选项卡,点击"环境变量";然后就会出现如下图所示的画面: 3.设置变量:JAVA_HOME,值:C:Program Files (x86)Javajdk1....
- 下一篇
浅谈图数据库
本文主要讨论图数据库背后的设计思路、原理还有一些适用的场景,以及在生产环境中使用图数据库的具体案例。 从社交网络谈起 下面这张图是一个社交网络场景,每个用户可以发微博、分享微博或评论他人的微博。这些都是最基本的增删改查,也是大多数研发人员对数据库做的常见操作。而在研发人员的日常工作中除了要把用户的基本信息录入数据库外,还需找到与该用户相关联的信息,方便去对单个的用户进行下一步的分析,比如说:我们发现张三的账户里有很多关于 AI 和音乐的内容,那么我们可以据此推测出他可能是一名程序员,从而推送他可能感兴趣的内容。 这些数据分析每时每刻都会发生,但有时候,一个简单的数据工作流在实现的时候可能会变得相当复杂,此外数据库性能也会随着数据量的增加而锐减,比如说获取某管理者下属三级汇报关系的员工,这种统计查询在现在的数据分析中是一种常见的操作,而这种操作往往会因为数据库选型导致性能产生巨大差异。 传统数据库的解决思路 传统数据库的概念模型及查询的代码 传统解决上述问题最简单的方法就是建立一个关系模型,我们可以把每个员工的信息录入表中,存在诸如 MySQL 之类的关系数据库,下图是最基本的关系模型:...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果