C++ primer plus 内存模型和命名空间下
前言
第一部分的序章
一 命名空间
1 命名空间
有前面的过渡知识我们可以知道命名空间是为了解决函数名字冲突所引出来的新的方法
名称空间可以是全局的, 也可以位于另一个名称空间中,但不能位于代码块中。因此,在默认情况下, 在名称空间中声明的名称的链接性为外部的,除非它引用了常量
由于前面的过渡知识都已经学的差不多了,这里就只进行补充
2 using声明和using编译指令
using namespace std;//using 编译指令
using std::cout; //using 编译声明
3 using编译指令存在的问题
二义性
namespace yang{
int a;
}
namespace zhang{
int a;
}
yang::a = 10;
zhang:: a = 10;//不存在二义性
using yang::a;
using zhang::a;
a = 10; //存在二义性
事实上,编译器不允许您同时使用上述两个using声明,因为这将导致二义性
using声明和using编译指令的比较
使用 using 编译指令导入一个名称空间中所有的名称与使用多个using声明是不一样的,而更像是大量使用作用域解析运算符。使用 using 声明时,就好像声明了相应的名称一样。如果某个名称已经在函数中声明了,则不能用ωing声明导入相同的名称。然而,使用 using编译指令时,将进行名称解析,就像在包 含 using 声明和名称空间本身的最小声明区域中声明了名称一样
还有一个就是未命名空间,就是前面没有名字