命名空间 namespace
C++中有两个比较基础又重要的概念,一个是作用域,另一个是生存期。作用域顾名思义就是作用的区域,分为函数原型作用域、局部作用域、类作用域和命名空间作用域,它们的作用范围按此顺序变大。生存期顾名思义就是变量从创建到消亡的这段时间,分为静态生存期和动态生存期。如果变量的生存期与系统程序的运行期相同,则该变量就具有静态的生存期。在所有大括号对之外定义的变量具有静态生存期,命名空间作用域都在大括号外,所以其变量具有静态生存期。在局部作用域中用static声明的变量也具有静态生存期。除了这两种情况之外的变量都具有动态生存期。
命名空间建立了一些相互隔离的作用域,且这些作用域里的变量都具有静态生存期。
namespace产生的原因
C++中采用的是单一的全局变量命名空间。在这单一的空间中,如果有两个变量或函数的名字完全相同,就会出现冲突。命名空间就是ANSIC++引入的可以由用户命名的作用域,用来处理程序中常见的同名冲突。
如果在头文件head1.h定义了全局变量string user_name;然后再在头文件head2.h也定义了string user_name,或者调用的某个库中已经定义了这个全局变量,系统在编译的时候就会报重复定义的错误。这个时候可以用extem string user_name来解决编译问题,但这个时候string user_name的作用域就从head1.h扩展到了head2.h,也许这并不是我们想要的情况,我们或许想要得到的是两个不同的全局变量,只是名字一样而已。
namespace使用
使用时先把变量定义在两个不同的命名空间中。
namespace XXX
{
string user_name;
}
namespace YYY
{
string user_name;
}
然后通过命名空间限定读取:
XXX::user_name="asd";
YYY::user_name="qwe";
一个命名空间中可以包括:变量(可以带有初始化);常量;数(可以是定义或声明);结构体;类;模板和命名空间(在一个命名空间中又定义一个命名空间,即嵌套的命名空间)。但命名空间中不可以包含命令行,如#include,不然会报错。
使用时可以包含整个命名空间using namespace XXX; 也可以只包含其中的某个变量using XXX::user_name; 这样可以减少编译的大小。
转载于:https://www.cnblogs.com/zhengxinwei/p/7471529.html
命名空间 namespace相关推荐
- C++中的命名空间namespace
1.Cpp中的命名空间 假设这样一种情况,当一个班上有两个名叫Zara的学生时,为了明确区分它们,我们在使用名字之外,不得不使用一些额外的信息,比如他们的家庭住址,或者他们父母的名字等等.同样的情况, ...
- PHP 命名空间(namespace)
2019独角兽企业重金招聘Python工程师标准>>> PHP 命名空间(namespace) PHP 命名空间(namespace)是在PHP 5.3中加入的,如果你学过C#和Ja ...
- PHP命名空间(Namespace)的使用详解(转)
对于命名空间,官方文档已经说得很详细[查看],我在这里做了一下实践和总结. 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.这种情况下只 ...
- 为 Vue3 学点 TypeScript, 命名空间(namespace)是什么?
往期目录 第一课, 体验typescript 第二课, 基础类型和入门高级类型 第三课, 泛型 第四课, 解读高级类型 第五课, 命名空间(namespace)是什么 什么时候要用命名空间? 如果你发 ...
- php命名空间 动态 new,PHP命名空间(namespace)的动态访问及使用技巧_php实例
PHP的命名空间(namespace)是PHP 5.3中加入最重要的一个新特性,这个概念在C#中已经很早就有了,php中的namespace其实和c#的概念是一样的. 一.动态访问命名空间的元素 na ...
- 【C++ 语言】命名空间 ( namespace | 命名空间定义 | 命名空间嵌套 | 域作用符 | 与 include 对比 )
文章目录 命名空间简介 自定义命名空间 自定义嵌套命名空间 域作用符 命名空间 与 include 区别 命名空间定义与使用完整代码 命名空间简介 命名空间 ( namespace ) : 1.命名空 ...
- C++命名空间namespace
1.namespace的作用 命名空间namespace是ANSI C++引入的可以由用户命名的作用域,用来处理程序中常见的重名冲突,不同的命名空间中可以存在名字相同的标识符而不会相互干扰,防止名字污 ...
- 【小白学习C++ 教程】十三、C++命名空间namespace
@Author:Runsen 文章目录 访问命名空间 嵌套命名空间 命名空间别名 任何C++程序都有声明namespace,比如下面的C++程序没有声明namespace int main() {in ...
- php namespace原理作用,php 命名空间(namespace)原理与用法实例小结
本文实例讲述了php 命名空间(namespace)原理与用法.分享给大家供大家参考,具体如下: 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致 ...
- PHP命名空间(Namespace)的使用详解
对于命名空间,官方文档已经说得很详细[查看],我在这里做了一下实践和总结. 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.这种情况下只 ...
最新文章
- python控制手机发短信_python-在python3中使用容联云通讯发送短信验证码
- VB6.0 怎样启用控件comdlg32.ocx
- mysql my.cnf参数配置_MySQLmy.cnf参数配置优化详解
- libc glibc glib 的关系
- DataList控件分页
- 微信公众平台开发问答 【转发】
- python读取mysql以html形式输出_python从mysql数据库提取出来的数据怎么在html里显示...
- 导出期刊对应格式的参考_3.2怎样按照某个期刊的格式要求生成文后的参考文献.PDF...
- linux伊甸园论坛,tcsh问题 - Mandrake/Mandriva - Linux伊甸园论坛
- 安全模块之FIPS 140-2标准和国密标准对比
- 计算机怎么升级64位操作系统,32位的电脑系统怎么升级成64位?
- Git问题Everything up-to-date正确解决方法
- cloudstack vpc network egress-ingress rules
- NRF52840 和电脑 进行蓝牙通信
- vue3+vite环境搭建 vue3+vite实战
- jsoncpp写法更新
- SSL证书、 der、 cer、 pem区别
- java图书推荐推荐管理系统
- 非线性悬架matlab,基于MATLAB/Simulink的油气悬架非线性阻尼特性分析
- 前端实现docx、pdf格式文件在线预览
热门文章
- 【php-laravel框架】第二节:laravel常用的扩展包汇总及安装教程
- php 解压rar文件怎么打开方式,php 解压rar文件
- 基于java员工管理系统设计(含源文件)
- Nacos笔记-对Nacos初步认识
- Oracle笔记-Oracle Net Manager添加监听IP(当服务器IP变化时要用)
- Python笔记-UiSelector文本定位方式(3种定位并点击)
- Nginx笔记-使用Nginx给vue应用设置一个代理
- 6.4.3树和森林的遍历
- ad采样做按键开关_电池应用中的电流采样电阻设计
- vue弹出层滑动禁止背景跟着滑动_vue移动端弹起蒙层滑动禁止底部滑动操作