C++基础_1::命名空间
命名空间
我们经常见到的std里面就是C++标准库中的东西,而std就是命名空间,可以便于我们更加方便的使用
使用命名空间
在我们平时练习代码的时候经常会使用如下语句,将命名空间展开使用,但是在项目中不建议展开命名空间
using namespace std;
这行语句就是将标准库中的东西全部都展开
在项目中更加建议指定命名空间+展开常用的配合使用
using std::cout;
using std::endl;//展开常用的
int main()
{
cout << 1 << endl;
return 0;
}
/*------------------------*/
int main()
{
int a = 0;
std::cin >> a;//指定命名空间使用
return 0;
}
自定义命名空间
自定义的命名空间使用与库命名空间使用是一致的
//自定义命名空间
namespace my_space
{
int num = 100;//命名空间内的变量
using std::cout;
using std::endl;//在自定义命名空间中包含指定库中的命名空间
//命名空间内的函数
int my_add(int a, int b)
{
return a + b;
}
//命名空间可以嵌套
namespace my_space2
{
int num2 = 200;
}
//命名空间内的函数声明
void my_swap(int* a, int* b);
}
void my_space::my_swap(int* a, int* b)//写在命名空间外的函数定义
{
int tmp = 0;
tmp = *a;
*a = *b;
*b = tmp;
}
//命名空间是开放的随时可以加入新的成员
namespace my_space
{
int num3 = 300;
}
/*****************************************************/
//以下为测试片段
void text()
{
for(int a = 0; a <= 10; a++)
{
my_space::num--;
}
}
int main()
{
std::cout << "my_space::num = " << my_space::num << std::endl;
std::cout << "my_space::my_space2::num2 = " << my_space::my_space2::num2 << std::endl;
std::cout << "my_space::num3 = " << my_space::num << std::endl;
int a = 1;
int b = 2;
std::cout << "交换前: " << "a=" << a << ";b=" << b << std::endl;
my_space::my_swap(&a, &b);
std::cout << "交换后: " << "a=" << a << ";b=" << b << std::endl;
std::cout << "my_space::my_add(my_space::num,b) = " << my_space::my_add(my_space::num, b) << std::endl;
text();
std::cout << "my_space::my_add(my_space::num,b) = " << my_space::my_add(my_space::num, b);
return 0;
}
总结:
1、在日常项目中,不建议全局展开所有命名空间,建议独个展开命名空间内常用的,在配合指定使用
2、命名空间可以自定义
3、自定义命名空间内可以存放变量(变量可以在外部修改)
4、自定义命名空间内可以存放函数,函数的定义和声明可以分离
4、自定义命名空间是开放的随时可以添加新成员而不影响内部其他成员
5、自定义命名空间可以嵌套
6、自定义命名空间中甚至可以包含指定库中命名空间中的成员