linux+c+命名空间,C ++中的命名空间

考虑一个情况,当我们有两个同名的同名的Zara的同事。无论何时我们需要区分他们,我们将不得不使用一些额外的信息及其名称,如区域,如果他们住在不同的地区,或他们的母亲或父亲的名字等。

在C ++应用程序中也会出现相同的情况。例如,您可能正在编写一些具有名为xyz()的函数的代码,并且还有另一个可用的库,它也具有相同的函数xyz()。现在,编译器无法知道您在代码中指的是哪个版本的xyz()函数。

一个命名空间的目的是克服这个困难,并作为额外的信息来区分类似的功能,类,变量等在不同库中可用相同的名称。使用命名空间,可以定义名称定义的上下文。实质上,命名空间定义了一个范围。

定义命名空间:

命名空间的定义与关键字开头的命名空间,然后命名空间名称如下

namespacenamespace_name{// code declarations}

要调用启用了命名空间的版本的函数或变量,请按以下方式添加命名空间名称:

name::code; // code could be variable or function.

让我们看看命名空间范围包括变量和函数的实体:

#includeusingnamespacestd;// first name spacenamespacefirst_space{voidfunc(){cout<

如果我们编译并运行上面的代码,输出结果如下:

Inside first_space

Inside second_space

使用指令

您还可以使用using namespace伪指令避免前缀命名空间。该指令告诉编译器后续代码正在使用指定命名空间中的名称。因此,命名空间隐含在以下代码中:

#includeusingnamespacestd;// first name spacenamespacefirst_space{voidfunc(){cout<

如果我们编译并运行上面的代码,输出结果如下:

Inside first_space

using指令也可用于引用命名空间中的特定项目。例如,如果你打算使用的std命名空间的唯一部分是cout,你可以参考它如下:

using std::cout;

后续代码可以引用cout而不预先命名空间,但std命名空间中的其他项目仍然需要如下所示:

#includeusingstd::cout;intmain(){cout<

如果我们编译并运行上面的代码,输出结果如下:

std::endl is used with std!

在使用指令中引用的名称服从正常范围规则。该名称从using指令到可以找到该伪指令的范围的末尾是可见的。具有在外部范围中定义的相同名称的实体将被隐藏。

不连续的命名空间

命名空间可以在几个部分中定义,因此命名空间由其单独定义的部分的总和组成。命名空间的单独部分可以分散在多个文件中。

因此,如果命名空间的一部分需要在另一个文件中定义的名称,则该名称仍然必须声明。编写以下命名空间定义可以定义新的命名空间,也可以为现有命名空间添加新元素:

namespacenamespace_name{// code declarations}

嵌套命名空间

命名空间可以嵌套在其中,您可以在其他名称空间内定义一个命名空间,如下所示:

namespacenamespace_name1{// code declarationsnamespacenamespace_name2{// code declarations}}

您可以通过使用结果运算符访问嵌套命名空间的成员,如下所示:

// to access members of namespace_name2

using namespace namespace_name1::namespace_name2;

// to access members of namespace:name1

using namespace namespace_name1;

在上述语句中,如果您使用namespace_name1,那么它将使命名空间名称2的元素在范围内可用,如下所示:

#includeusingnamespacestd;// first name spacenamespacefirst_space{voidfunc(){cout<

如果我们编译并运行上面的代码,输出结果如下:

Inside second_space

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值