cpx*_*cpx 7 c++ static namespaces
我可以假设在未命名的命名空间中声明的对象等同于static吗?
namespace { int x; };// #1
static int x; // #2
Run Code Online (Sandbox Code Playgroud)
FWIK,在这两种情况下,x都将具有静态存储持续时间和内部链接.
声明为对象的所有规则都static适用于未命名的命名空间中的对象吗?
例如:
extern关键字x吗?建筑和破坏的顺序是什么?它会一样吗?
顺序与常规全局变量相同.所以它与静态不同.
话虽如此,我强烈建议您编写不关心订单的代码.你依赖于任何全局变量的特定初始化顺序越少越好.
我可以在未命名的命名空间中使用带有x的extern关键字吗?
不.为了extern某些东西,你必须能够输入它的名字.未命名的命名空间的神奇之处在于您无法键入其名称.该名称由编译器分配.你不知道.因此,如果你尝试extern它,你将改为外表其他东西.
如果在头文件中放入一个未命名的命名空间,则包含它的每个翻译单元将获得该变量的不同版本.他们都会extern,但他们会谈论一个不同的外部变量.
| 归档时间: |
|
| 查看次数: |
1088 次 |
| 最近记录: |