文章目录
- C++入门
- 命名空间
- 域作用限定符
- 域作用限定符操作
- C++的域
- 编译器的搜索原则
- 命名空间域的展开
- 命名空间的嵌套
C++入门
命名空间
命名空间的存在:为了解决同域中起名字冲突的问题
在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存
在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,
以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。
域作用限定符
::称为域作用限定符
它可以访问到命名空间域中的变量 函数 结构体 等等
编译器的搜索原则为局部域 全局域
那么 如果存在 全局变量 int x = 2; 局部变量 int x = 1;
编译器会有限搜索到局部变量x
想要访问到 同名的全局变量 可以使用::符
::前面省略域名 默认访问全局域
假设想要打印全局x变量
域作用限定符操作
访问变量 函数 结构体 其中访问结构体 与变量函数访问方式不相同
C++的域
c++域:全局域 局部域 命名空间域 类域
创建的命名空间域中的内容都属于全局域 命名空间域 干预的只有访问的问题
不会影响生命周期
编译器的搜索原则
编译器的搜索原则:未指定域:优先局部域 之后全局域
指定域 :直接会在指定的域中搜索
命名空间域的展开
使用using namespace 域名 可以将命名空间域的访问权打开
不须在指定域名 展开后也就是全局域了
命名空间域的展开也是不好的可能会出现命名冲突的问题
std是c++库的命名空间域名
命名空间域也可以展开部分
命名空间的嵌套
命名空间域名允许相同 相同的命名空间会合并