个人技术分享

命名空间

为了解决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;
}

需要注意

  1. cout和endl属于定义在iostream库内命名空间里的函数,所以使用前必须要先将这两个函数通过上面三种办法引用过来,否则找不到此函数报错。
  2. 如果定义了两个同名的命名空间,那么这两个命名空间将会自动合并,下方举例。
namespace a
{
    int n=10;
}
namespace a
{
	int m=20;
}
//可以看成为
namespace a
{
    int n=10;
    int m=10;
}

img

✨本文收录于C++语法及练习

当你喜欢一篇文章时,点赞、收藏和关注是最好的支持方式。如果你喜欢我的文章,请不要吝啬你的支持,点赞👍、收藏⭐和关注都是对我最好的鼓励。感谢你们的支持!如有问题欢迎指正!