3-1 命名空间

1 namespace

  • 命名空间解决了命名冲突问题
  • 大型工程中推荐直接采用域解析运算符,采用using易造成二义性
  • 不要在头文件按中使用using

命名空间通常用于解决命名冲突的问题,比如在大型项目中,我们可能在两个文件中命名了两个相同名字的函数,或者变量,为了明确我们所使用的函数或变量到底是哪一个文件中的,就引入了namespace的概念。

  • 情形一 使用

名称空间相当于提供了一个声明区域,其使用方法如下:

namespace Jerry{
  double money;
  void get_MOney();
  int pal;
  strut well{...};
}

名称空间可以是全局的,也可以是嵌套在另一个名称空间中的,但是不可以位于代码块中。对于名称空间中名称的访问,采用域解析运算符::来实现,如

Jerry::money=12.34;
Jerry::get_Money();

但是我们每一次使用都采用上述方法在有些时候会显得程序冗杂,而且编写者也会感到不耐烦,因此C++提供了两种机制来建辉对名称空间中名称的使用,即using声明和using编译指令,其中using声明将特定的名称添加到它所属的声明区域,using编译指令(using namespace)使整个名称空间可用。

using Jerry::money;//using声明
using namespace Jerry;//using编译指令

这个时候我们就明白写程序时一直所使用的using namespcae std意思就是可以使用名称空间std中的所有,例如coutcin

  • 情形二 注意事项

对于using要注意不要在头文件中使用,容易造成潜在冲突。另外采用using也容易造成二义性,比如Jerry和Tom的名称空间中都有money,采用using的话就会造成冲突

using Jerry::money;
using Tom::money;

如果我们把using去掉的话,就不会出现这种情况了

posted @ 2023-03-11 23:07  白日梦想家-c  阅读(32)  评论(0编辑  收藏  举报