【C++】名称空间:传统的C++名称空间+using namespace如何使用?using编译指令与using声明比较
目录
名称空间
1. 传统的C++名称空间
1.1 声明区域(declaration region):
声明区域是可以在其中进行声明的区域。
在函数外面声明的全局变量,其声明区域为其声明所在的文件;对于在函数中声明的变量,声明区域为其声明所在代码块。
1.2 潜在作用域(potential scope):
变量的潜在作用域从声明点开始,到其声明区域的结尾。潜在作用域比声明区域小,因为先定义后使用。
1.3 作用域(scope):
变量对程序而言可见的范围称为作用域。
变量并非在其潜在作用域的任意位置都可见:它可能被另一个嵌套声明区域中的同名变量隐藏。
1.4 声明区域 示意图
1.5 潜在作用域与作用域 示意图
2. 新的名称空间特性
通过定义一种新的声明区域来创建命名的名称空间,这样做的目的之一是提供一个声明名称的区域。
一个名称空间不会与另一个名称空间的相同名称发生冲突
使用namespace 创建了两个名称空间:Jack Jill
-
namespace Jack{
-
double pail;
-
void fetch();
-
int pal;
-
struct Well { ... };
-
}
-
-
namespace Jill{
-
double bucket(double n) { ... }
-
double fetch;
-
int pal;
-
struct Hill { ... };
-
}
名称空间是全局的,也可以位于另一个名称空间中,但不能位于代码块中。
默认情况下,名称空间中的名称链接性为外部。(除非引了常量)
0 全局名称空间:对应与文件级声明区域,全局变量被描述位于全局名称空间中。
名称空间不会发生冲突:Jack里面的fetch 可以与 Jill 中的fetch共存;Jill中的Hill可以与外部Hill共存。
2.1 using声明和using编译指令
using声明使特定的标识符可用,using编译指令使整个名称空间可用。
using声明由被限定的名称加关键字using组成:
using Jill :: fetch;
2.1.1 using 声明将特定的名称添加到它所属的声明区域中。
2.1.2 在函数外面使用Using声明时,将名称添加到全局名称空间中
2.1.3 全局声明区域使用Using编译,使得该名称空间的名称全局可用
2.2 using 编译指令和using声明之比较
2.3 名称空间的其他特性!
文章来源: kings.blog.csdn.net,作者:人工智能博士,版权归原作者所有,如需转载,请联系作者。
原文链接:kings.blog.csdn.net/article/details/97105781
- 点赞
- 收藏
- 关注作者
评论(0)