【发布时间】:2012-09-25 13:32:16
【问题描述】:
可能重复:
Does C++ call destructors for global and class static variables?
生命周期是多少
- 全球
MyClass myclass; - 全球
static MyClass myclass; - 全球
const MyClass myclass; - 全球
static const MyClass myclass; - 函数本地
static MyClass myclass;实际发生初始化时 - C++11 中的全局
static constexpr MyClass myclass;
尤其是它们会在常规程序结束时被销毁(即main 不会出现错误)?标准在哪里这样规定。
我注意到 私有析构函数 阻止了所有这些变量的创建。但是,如果我没记错的话,在某处明确提到了一些静态数据可能已被放入静态数据部分并已预先构建加载。这对我来说意味着不会调用任何析构函数。这意味着我可以定义这样一个变量...
【问题讨论】:
-
你可以在析构函数中加入
cout语句,自己看看。 -
@Beta “试试看”在 C 和 C++ 中经常会因为实现定义和未定义的行为而失败。
-
@Beta 你当然是对的。让我在我的问题中添加我想知道在标准中查看的位置。
-
@delnan: 好点(虽然在这种情况下它定义明确)。
标签: c++ destructor lifetime