在未命名的命名空间中声明变量

时间:2012-07-20 08:40:57

标签: c++ pimpl-idiom

在我目前的工作中,我看到在cpp文件中未命名的命名空间中声明的变量,并且仅由该类使用,就像它们是成员变量一样。

我认为这是一种有趣的方式,只保留.hpp中的.h和implmentation中的界面信息,并且比普通的pimpl习语更少工作。

我看到人们一直在使用pimpl,但从来没有采用这种方式,它有什么问题吗?

2 个答案:

答案 0 :(得分:0)

在.cpp文件的未命名命名空间中声明的变量是文件范围的;这意味着每次执行程序只有一个实例。

您可以通过创建对象的两个实例并观察它们在未命名的命名空间中干扰彼此的变量来自行查看。

答案 1 :(得分:-1)

请显示一些示例代码。 AFAIK,您不能在未命名的命名空间中声明成员变量(除非在未命名的命名空间中声明类本身)。

引入了未命名的命名空间,以取代将变量声明为静态的常见做法,仅在一个编译单元中使用。