C++之未命名的名字空间_Mac mac硬盘未命名

在C++中 我们可以用未命名的名字空间 unnamed namespace 声明一个局部于某一文件的实体,未命名的名字空间以关键字 namespace开头,同为该名字空间是没有名字的,所以在关键字namespace后面没有名字,而在关键字namespace后面使用花括号包含声明块

?
12345// ----- SortLib.C -----namespace{voidswap(double*d1,double*d2) { }}

函数swap()只在文件SortLib.C中可见,如果另一个文件也含有一个带有函数swap()定义的未命名名字空间,则该定义引入的是一个不同的函数,函数swap()存在两种定义但这并不是个错误,因为它们是不同的函数,不像其他名字空间,未命名的名字空间的定义局部于一个特定的文件,不能跨越多个文本文件。

在 SortLib.C中,在未命名的名字空间的定义之后,我们可以用swap()的简短格式引用它,没有必要用域操作符引用未命名名字空间的成员 。

?
123456789voidquickSort(double*d1,double*d2) {//...double*elem = d1;//...//引用未命名名字空间成员 swap()swap(d1, elem );//...}

由于未命名名字空间的成员是程序实体,所以函数 swap()可以在程序整个执行期间被调用,但是,未命名名字空间成员名只在特定的文件中可见在构成程序的其他文件中是不可见的 。

在引入标准C++名字空间之前,解决此类声明局部化问题的常见方案是使用从 C语言中继承来的关键字static,未命名名字空间的成员与被声明为static 的全局实体具有类似的特性 。在 C中 被声明为static的全局实体在声明它的文件之外是不可见的 ,例如 在 SortLib.C中的声明可以按如下形式写成 C程序,它会提供给swap()相同的特性 。

?
1234// SortLib.C// swap() 在其他程序中不可见staticvoidswap(double*d1,double*d2) { }// sort 函数定义同前

许多 C++实现都支持全局静态声明,但是,随着越来越多的C++实现都支持名字空间全局静态声明的用法将会被未命名的名字空间成员所取代。

C++之未命名的名字空间_Mac mac硬盘未命名

  

爱华网本文地址 » http://www.aihuau.com/a/25101010/18468.html

更多阅读

找回丢失的磁盘空间 精 相机丢失3年找回

有时候我们的磁盘莫名其妙的少了很多空间,不能再装以前那么东西了。这时我们可以通过一款工具来找回丢失的磁盘空间找回丢失的磁盘空间 精——工具/原料Disk Genius找回丢失的磁盘空间 精——步骤/方法找回丢失的磁盘空间 精 1、插入

适合双胞胎兄弟的名字 火影之佐助双胞胎兄弟

七星堂编辑部/原创适合双胞胎的名字,对于一个家庭而言,如果降临一对双胞胎,那是怎样的快乐和幸福,但是同时这个家庭也会多了一倍的负担,可谓是美丽的负担了。而如果再给双胞胎各取一个有创意、有内涵的名字,那么可谓是难上加难了,对于双

北京还有一个更有内涵的名字:“北京湾”

北京还有一个更有内涵的名字:“北京湾”撰文/单之蔷北京市地形遥感图说起北京这块地方,我的脑海里首先浮现出这样一个名称“北京湾”。有趣的是,我脑海中的“北京

声明:《C++之未命名的名字空间_Mac mac硬盘未命名》为网友我曾畏惧天下分享!如侵犯到您的合法权益请联系我们删除