【发布时间】:2012-02-18 09:51:42
【问题描述】:
是否使用默认构造函数进行初始化(编译器生成) “静态初始化”还是“动态初始化”?
我的意思是在
class test{
int m;
public :
test(): m(12) {}
};
test i;
int main()
{//
}
i 何时初始化 - 在编译时还是动态初始化,即在其他文件中使用 i 进行初始化或其他事情是否安全?
如果用户定义了默认构造函数怎么办?
【问题讨论】:
-
问题的症结在于:“当这些对象具有用户定义的构造函数时,如何初始化全局/命名空间范围对象?”。答案可以在标准的
§3.6.2中找到。在这种情况下,i.m将静态初始化为零,并动态初始化为 12,但是,如果将默认构造函数声明为constexpr,则i.m将静态初始化为 12。
标签: c++ initialization