0

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

我认为这是一种在 .h 中仅保留接口信息并在 .cpp 中实现的有趣方式,并且比通常的 pimpl 惯用语工作量少。

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

4

2 回答 2

1

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

您可以通过创建对象的两个实例并观察它们在未命名的命名空间中相互干扰彼此的变量来亲眼看到这一点。

于 2012-07-20T08:47:33.850 回答
-1

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

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

于 2012-07-20T08:51:08.237 回答