命名空间是一个极其重要的内容啊。命名空间保存着大量的变量名,函数名,类名,宏名,对象名。使用命名空间,防止发生命名冲突。
从using namespace std 开始说起。std中保存着c++标准程序库中的所有标识符。
对于#include ”iostream“和#include <iostream>前者是c中的头文件,对于其中的内容全部是在全局命名空间的,而后者为c++标准为了正确使用命名空间,将其中的命名都存储在std中,所以,要使用iostream中的内容,必须要加上"using namespace std"
命名空间可以是全局的,也可以在另一命名空间中,但不能位于类或者代码中,命名空间中声明的标识符默认具有外部链接特性。c++标识符的作用域分为 全局,命名空间,类,代码块,四级。全局变量等即是存在一个全局的命名空间中。
定义命名空间:
namespace name{
}
namespace{
}
命名空间也可以没有名字。命名空间只能定义,不能声明。
当在命名空间中调用其他命名空间的标识符时,使用 namespace::thing 当一个命名空间在另一个命名空间内时,可以直接调用上一级的标识符,而外侧的命名空间不能直接调用内部明明空间的标识符,因为它在内部命名空间的外部了。
namespace first{
int firstint=0;
namespace second{
int secondint=++firstint;//在first内部,first中命名的变量对其可见
}
//int third=secondint;//出错,不能使用外部命名空间中的变量
int forth=second::secondint;
using namespace second;
int third=secondint;
}
命名空间是开放的,可以随时将新成员加入已有的命名空间中。
namespace second{
int thirdint;
}
在命名空间外部使用命名空间内部的数据或函数时,除了前面的using namespace name和name::标识符外,还可以使用using来声明命名空间中的标识符,以使其可以使用:
using first::second::secondint;
using second::funA;
funA();
secondint=0;
可以看出,当上上断代码尝试进行添加成员进命名空间时,却没有成功,因为此时成了在全局的命名空间中定义一个新的命名空间了。所以,应该是这样进行增加的:
namespace first{
namespace second{
int thirdint;
void funA(){
thirdint=5;
}
}
}
分享到:
相关推荐
C++命名空间理解及小结,命名空间的使用方法。
C++命名空间 C++ Builder代码演示
C++命名空间自定义及使用(附完整程序)
主要介绍了C++ 命名空间的的相关资料,文中示例代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下
c++语言提供一个全局的命名空间namespace,可以避免导致全局命名冲突问题。举一个实例,请注意以下两个头文件:
C++的命名空间是什么?刚开始学习C++,一文清晰明了的分清楚命名空间的概念。后续持续更新自己的C++笔记
对C++的一些概念进行梳理
C++ 命名空间 假设这样一种情况,当一个班上有两个名叫 Zara 的学生时,为了明确区分它们,我们在使用名字之外,不得不使用一些额外的信息,比如他们的家庭住址,或者他们父母的名字等等。 同样的情况也出现在 C++ ...
.
.
C++NamespaceTool是一个用于的简单 C++ 命名空间重构包。安装可以使用带有安装包选项的来安装C++NamespaceTool 。描述在 C++ 编程中, using namespace std编写被认为是一种不好的做法。 首选方法是在顶部某处显式...
主要介绍了C++命名空间实例解析,对C++程序员来说是非常重要的知识点,需要的朋友可以参考下
主要介绍了C++命名空间5种常见用法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
标准C++引入命名空间。基本知识。有需要的可以下载。
名字空间是C++提供的一种解决符号名字冲突的方法。 一个命令空间是一个作用域,在不同名字空间中命名相同的符号代表不同的实体。 通常,利用定义名字空间的办法,可以使模块划分更加方便,减少模块间的相互...
今天小编就为大家分享一篇关于C++命名空间namespace的介绍与使用,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
protobuf 命名空间,包