命名空间
主要用来作为附加信息来区分不同库中相同名称的函数、类、变量等。本质上命名空间是用来限定范围的,比如说们找一个叫“张伟”的人,全中国可能有几千万。但是我们可以说,在xx省xx市xx楼找一个叫张伟的,这就很明确了。
定义命名空间
可以用关键字namespace来定义一个命名空间:
namespace namespace_name {
// 代码声明
}
调用命名空间
我们可以用范围解析符调用某个命名空间中的函数或者变量:
namespace_name::f(x)或者x
下面的例子定义了两个命名空间,在两个空间内有两个名称相同但实现不同的函数,我们通过这个例子可以方便理解:
#include <iostream>
using namespace std;
// 第一个命名空间
namespace first_space{
void func(){
cout << "Inside first_space" << endl;
}
}
// 第二个命名空间
namespace second_space{
void func(){
cout << "Inside second_space" << endl;
}
}
int main ()
{
// 调用第一个命名空间中的函数
first_space::func();
// 调用第二个命名空间中的函数
second_space::func();
return 0;
}
为什么C++程序在#include之后要写using namespace std
在看过上面两篇之后,大家可以理解,#include< iostream > 是为了导入标准输入输出库。完了之后我们首先来介绍一下
using关键字
我们使用using这个关键字就可以一次性声明下述代码统一使用std这个命名空间内的函数。我们后续就不需要每次使用调用命名空间,如std::cout这样的。
比如我们用using告诉下面的代码使用第一个命名空间,这样我们不写命名空间的时候他就会默认使用第一个命名空间内的函数:注意主函数上面一行using namespace first_space;
#include <iostream>
using namespace std;
// 第一个命名空间
namespace first_space{
void func(){
cout << "Inside first_space" << endl;
}
}
// 第二个命名空间
namespace second_space{
void func(){
cout <&