使用默认构造函数进行初始化(生成编译器)吗?
“静态初始化”还是“动态初始化”?
我的意思是
class test{
int m;
public :
test(): m(12) {}
};
test i;
int main()
{//
}
这里是什么时候初始化
i
-在编译时还是动态初始化,即在其他文件中使用i
进行初始化或其他事情安全吗?如果用户定义了默认构造函数怎么办?
最佳答案
由于test
具有构造函数,因此它将在对象初始化时运行。该对象将放置在初始化为零的存储区域中。您甚至可以通过在创建对象之前和之后使用i.m
初始化值来对此进行测试:
extern test i;
int dummy1 = i.m;
test i;
int dummy2 = i.m;
然后,当您打印
dummy1
和dummy2
时,应该分别得到0
和12
。如果要静态初始化i
,则需要使用类似test i = { 12 };
但是,这仅适用于POD。综上所述,请注意,全局数据总是不好的。只是不要打扰并正确地做事。
关于c++ - 静态或动态初始化时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9340183/