命名空间
为了解决C语言命名冲突问题而诞生
namespace 命名空间名
{......
}
- 命名空间内函数作用域只在此命名空间内
错误
using std::cout; //为了保证正常输出先忽略此行
using std::endl; //为了保证正常输出先忽略此行
#include <iostream>namespace a
{int n=10;
}
int main()
{cout << n << endl; //不在同一域内报错
}
调用命名空间内变量有三种办法
第一种办法:使用作用域限定符::
这种方法指定了域所以可以避免命名冲突
using std::cout; //为了保证正常输出先忽略此行
using std::endl; //为了保证正常输出先忽略此行
#include <iostream>namespace a
{int n=10;
}
int main()
{cout << a::n << endl;
}
第二种办法:使用using引入变量
- 语法:using 域名:域内变量名
using std::cout; //为了保证正常输出先忽略此行
using std::endl; //为了保证正常输出先忽略此行
#include <iostream>namespace a
{int n=10;
}
using a::n; //重点在此行
int main()
{cout << n << endl;
}
这种办法将命名空间域里的变量通过using引用到全局,所以可以直接调用到n。
第三种办法:使用using引入命名空间
- 语法:using namespace 命名空间名称
using std::cout; //为了保证正常输出先忽略此行
using std::endl; //为了保证正常输出先忽略此行
#include <iostream>namespace a
{int n=10;
}
using namespace a; //重点在此行
int main()
{cout << n << endl;
}
需要注意
- cout和endl属于定义在iostream库内命名空间里的函数,所以使用前必须要先将这两个函数通过上面三种办法引用过来,否则找不到此函数报错。
- 如果定义了两个同名的命名空间,那么这两个命名空间将会自动合并,下方举例。
namespace a
{int n=10;
}
namespace a
{int m=20;
}
//可以看成为
namespace a
{int n=10;int m=10;
}
✨本文收录于C++语法及练习
当你喜欢一篇文章时,点赞、收藏和关注是最好的支持方式。如果你喜欢我的文章,请不要吝啬你的支持,点赞👍、收藏⭐和关注都是对我最好的鼓励。感谢你们的支持!如有问题欢迎指正!