C++中的命名空间

发表于:2017-1-06 09:53

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Linux公社    来源:51Testing软件测试网采编

  一,命名空间(namespace)的基本概念以及由来
  1.什么是标识符:
  在C++中,标识符可以是基 本的变量,类,对象,结构体,函数,枚举, 宏等。
  2.什么是命名空间:
  所谓的命名空间是指标识符的可见范围。C++标准库中的所有的标识符都被定义在一个名为std的命名空间中。
  3.C语言的命名空间:
  在C语言中只有一个全局作用域,因此在C语言中所有的标识符共享一个命名空间,因此随着代码量的增大,标识符之间可能会重名。由此会造成一些命名问题。
  4.针对C语言的问题,在C++中提出了命名空间的概念:
  1.命名空间将全局作用域划分成不同的的部分。
  2.不同的命名空间中的标识符可以重名而不会发生冲突。
  3.全局作用域也叫做默认命名空间。
  4.命名空间之间可以相互嵌套。
  二,命名空间(namespace)的定义以及使用
  1.命名空间的定义:
  namespace 命名空间名称
  {
  ......
  }
  2.命名空间的使用:
  using namespace name; // 使用name这个命名空间
  using namespace name::variable; // 使用name这个命名空间下的variable
  std::cout << "Hello,NameSpace" << std::endl; // 直接使用这个命名空间中的标识符
  ::tmp = 0; // 使用默认命名空间的变量,默认情况下可以直接使用默认命名空间的所有标识符
  3.域作用符::
  域作用符用两个冒号(::)表示,用来访问命名空间下的标识符。
  三,命名空间(namespace)实际案例
# include<iostream>
/* 定义命名空间n1 */
namespace n1
{
/* 定义学生类 */
class Student
{
public:
char name[64];
int    age;
};
/* 定义函数 */
void printN1()
{
std::cout << "我是n1命名空间的printN1()" << std::endl;
}
/* 定义命名空间n2 */
namespace n2
{
/* 定义变量n */
int n = 0;
}
}
// 在默认命名空间下定义变量a
int a = 100;
int main()
{
// 使用命名空间n1,曝光n1的所有标识符,因此可以调用printN1()函数
using namespace n1;
printN1();
// 使用命名空间n2,曝光n2的所有标识符,因此可以使用变量n
using namespace n1::n2;
// 直接使用指定命名空间下的标识符
std::cout << n << std::endl;
// 使用域作用符访问默认命名空间下的标识符
::a = -100;
}
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号