一、概述
C++ 的 命名空间 机制可以用来解决复杂项目中名字冲突的问题。
举个例子:C++ 标准库的所有内容均定义在 std
命名空间中,如果你定义了一个叫 cin
的变量,则可以通过 cin
来访问你定义的 cin
变量,通过 std::cin
访问标准库的 cin
对象,而不用担心产生冲突。
二、用法
如下所示,我们在程序中先定义命名空间,再使用。在主函数中用命名空间::函数名来调用。
#include <bits/stdc++.h>
namespace A{ //定义命名空间A
int fun(int a){
a++;
return a;
}
}
namespace B{ //定义命名空间B
int fun(int a){
a--;
return a;
}
}
using namesapce A; //使用命名空间A
using namesapce B; //使用命名空间B
int main(){
int n, m, x;
std::cin >> n >> m >> x; //使用std的cin输入
for(int i = 1; i <= n; i++){
x = A::fun(x); //使用命名空间A的fun函数
}
for(int i = 1; i <= m; i++){
x = B::fun(x); //使用命名空间B的fun函数
}
std::cout << x; //使用std的cout输出
return 0;
}
另外命名空间可以嵌套,如下所示
#include <bits/stdc++.h>
namespace A {
namespace B {
void f() { ... }
} //namespace B
void f() {
B::f(); //实际访问的是A::B::f(),由于当前位于命名空间 A内所以可以省略前面的A::
}
} //namespace A
void f(){ //这里定义的是全局命名空间的f函数,与A::f和A::B::f都不会产生冲突
A::f();
A::B::f();
}
注意定义完要写 using
指令:using namespace ……;
有了 using
指令,C++中的代码可以有这两种等价写法:
#include <bits/stdc++.h>
using namespace std;
int main() {
int x, y;
cin >> x >> y;
cout << y << endl << x;
return 0;
}
#include <bits/stdc++.h>
using std::cin;
using std::cout;
using std::endl;
int main() {
int x, y;
cin >> x >> y;
cout << y << endl << x;
return 0;
}
对于C++空间的讲解到这里就结束了,如果小编出现了什么错误请提出来噢