命名空间中定义的变量或函数何时被分配内存?

时间:2016-08-06 02:01:15

标签: c++ memory namespaces

考虑代码:

namespace Jack
{
    char ch{'A'};
    void show(){ std::cout<<ch };
}
int main()
{
Jack::show();
return 0;
}

在这种情况下,内存分配给Jack::ch的时间是多少?在声明命名空间Jack或声明Jack::show()

1 个答案:

答案 0 :(得分:2)

ch对象位于全局范围内。全局范围中的类/类型的实例在启动时被构造,初始化,分配,等等,并且它们的范围在执行的生命周期中存在。

对象的命名空间仅与对象的名称相关。对象的构造或销毁不受对象名称所在的任何命名空间的影响,而是受其范围的影响。