[知识点] 1.3.4 命名空间

前言

可能是目前最简短的一篇?因为实在不知道可以和那一篇一起讲了。

(总目录:https://www.cnblogs.com/jinkun113/p/12528423.html

1.3.4 命名空间 namespace

C++ 另一大特性——命名空间(namespace),用来解决复杂项目中名字可能出现冲突的问题——比如某项目由 jk 和 bebe 共同完成,而他俩在定义变量名时总是重复,比如都使用了 vis 作为标记数组,那么就可以使用 namespace 来对各自的工作空间进行切割:

 1 #include <bits/stdc++.h>
 2 
 3 namespace jk {
 4     int vis[20];
 5 }
 6 
 7 namespace bebe {
 8     int vis[20];
 9 }
10 
11 int main() {
12     jk :: vis[1] = 1;
13     bebe :: vis[1] = 0;
14     return 0;
15 }

当然并非每次都需要强调这是谁的 vis。使用 “using namespace ” + 空间名,相当于是划分地盘:

 1 #include <bits/stdc++.h>
 2 
 3 namespace jk {
 4     int vis[20];
 5 }
 6 
 7 namespace bebe {
 8     int vis[20];
 9 }
10 
11 int main() {
12     using namespace jk;
13     vis[1] = 1;
14     bebe :: vis[1] = 0;
15     return 0;
16 }

这里表示,主程序这一块都是 jk 的,jk 住在这里了,那么他自己的东西就不用再强调是谁的了,vis[1] 等价于 “jk :: vis[1]”,而外人 bebe 仍需标明。

所以,平时竞赛最常用的 using namespace std 是指什么?是 C++ 默认提供的一套标准命名空间,里面包含 cin, cout, endl, ... 等等。

当然,除了上述这样允许访问某命名空间的任何成员,也可以选择仅访问其中一个成员,比如 using std :: cin,等等。

C++ 另一大特性——命名空间(namespace),用来解决复杂项目中名字可能出现冲突的问题——比如某项目由 jk 和 bebe 共同完成,而他俩在定义变量名时总是重复,比如都使用了 vis 作为标记数组,那么就可以使用 namespace 来对各自的工作空间进行切割:

 1 #include <bits/stdc++.h>
 2 
 3 namespace jk {
 4     int vis[20];
 5 }
 6 
 7 namespace bebe {
 8     int vis[20];
 9 }
10 
11 int main() {
12     jk :: vis[1] = 1;
13     bebe :: vis[1] = 0;
14     return 0;
15 }

当然并非每次都需要强调这是谁的 vis。使用 “using namespace ” + 空间名,相当于是划分地盘:

 1 #include <bits/stdc++.h>
 2 
 3 namespace jk {
 4     int vis[20];
 5 }
 6 
 7 namespace bebe {
 8     int vis[20];
 9 }
10 
11 int main() {
12     using namespace jk;
13     vis[1] = 1;
14     bebe :: vis[1] = 0;
15     return 0;
16 }

这里表示,主程序这一块都是 jk 的,jk 住在这里了,那么他自己的东西就不用再强调是谁的了,vis[1] 等价于 “jk :: vis[1]”,而外人 bebe 仍需标明。

所以,平时竞赛最常用的 using namespace std 是指什么?是 C++ 默认提供的一套标准命名空间,里面包含 cin, cout, endl, ... 等等。

当然,除了上述这样允许访问某命名空间的任何成员,也可以选择仅访问其中一个成员,比如 using std :: cin,等等。

猜你喜欢

转载自www.cnblogs.com/jinkun113/p/12917334.html
今日推荐