namespace命名空间
什么是命名空间?
- namespace=命名空间
同一个名称在不同的命名空间中所指向的对象是不同的
为什么要使用命名空间?
防止标识符的命名发生冲突
你写的代码中定义了个fun()函数
所使用的类库中也包含了一个fun()函数
当你的代码中调用fun()函数时
程序:?到底用哪里的fun()函数?类库里面的还是你写的?
为了解决这问题,引入了命名空间(namespace)的概念
命名空间的使用
命名空间的创建和使用
#include<iostream>
using namespace std;
namespace first_space
{
void func()
{
cout <<"这是在第一个命名空间"<<endl;
}
}
namespace second_space
{
void func()
{
cout<<"这是在第二个命名空间"<<endl;
}
}
// 使用命名空间
int main()
{
// 使用第一个命名空间的函数func()
first_space::func();
// 使用第二个命名空间中的函数func()
second_space::func();
// 不指定命名空间使用func()会怎么样? 会报错 因为编译器在当前的命名空间中找不到func()
// func();
return 0;
}
命名空间中using的用法
using namespace 命名空间名称;
使用指定的命名空间
#include<iostream>
using namespace std;
namespace first_space
{
void func()
{
cout <<"这是在第一个命名空间"<<endl;
}
}
namespace second_space
{
void func()
{
cout<<"这是在第二个命名空间"<<endl;
}
}
// 指定使用某个命名空间 这样就不用在前面加上命名空间的名字了
using namespace second_space;
// 指定使用第二个命名空间
int main()
{
// 使用第一个命名空间的函数func()
first_space::func();
// 使用第二个命名空间中的函数func()
func();
// 因为已经指定了所以不需要详细的说明使用哪个命名空间
return 0;
}
命名空间使用时的注意点
- 先声明命名空间再使用
和函数一样 必须先声明后使用
//using namespace second_space; 错误的写法 因为这个时候second_space还没声明呢 不能使用
namespace second_space
{
void func()
{
cout<<"这是在第二个命名空间"<<endl;
}
}
using namespace second_space;//正确的写法 先声明后使用
小结
- 用户可以自定义命名空间
- 可以使用C++自带的命名空间
- 命名空间和函数一样必须先定义后使用