C++ 标准中的 $7.3.1.1/2 部分内容如下:
static关键字的使用是
在 a 中声明对象时已弃用
命名空间范围;未命名的命名空间
提供一个更好的选择。
我不明白为什么未命名的命名空间被认为是更好的选择?理由是什么?我很早就知道标准的内容,但我从未认真思考过,即使在回答这个问题时也是如此:未命名命名空间相对于静态的优越性?
它被认为是优越的,因为它也可以应用于用户定义的类型,正如我在我的文章中所描述的那样answer?还是还有其他我不知道的原因?我问这个问题,特别是因为这是我在回答中的推理,而标准可能还有其他考虑。
- 正如您所提到的,命名空间适用于任何事物,而不仅仅是函数和对象。
- 正如格雷格指出的那样,
static
已经意味着太多的事情了。
- 命名空间提供了一种统一且一致的方式来控制全局范围内的可见性。您不必为同一件事使用不同的工具。
- 使用匿名命名空间时,函数/对象名称将被正确地破坏,这使您可以在破坏后在符号表中看到类似“(匿名命名空间)::xyz”的内容,而不仅仅是具有静态链接的“xyz” 。
- 正如下面的评论所指出的,不允许使用静态事物作为模板参数,而使用匿名名称空间则可以。
- 更多的?可能吧,但我现在想不出其他的了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)