我想知道,在c++中,对象的初始化发生在什么时候?
它是在编译时还是在链接时?
对于ex:
//file1.cpp
extern int i;
int j=5;
//file2.cpp ( link with file1.cpp)
extern j;
int i=10; 现在,编译器做了什么:根据我的说法,它为变量分配存储空间。
现在我想知道:
它是否也将初始化值放入该存储中,还是在链接时完成?
发布于 2010-06-14 13:28:28
其实有不同的情况:
/
发布于 2010-06-14 13:07:07
正如您所说的,编译器为变量分配存储空间。我认为初始化值也将在编译时完成,而不是在链接时完成。
发布于 2010-06-14 13:10:17
在您的示例中没有对象,只有int。如果您所说的“初始化”是指何时分配它们的值,那么这些int将被转换为对象文件中数据部分中的单词大小的条目,这些条目将使用它们的初始值进行硬编码。数据部分以及目标文件的其余部分都是由编译器创建的,所以我认为您的问题的答案是编译时
https://stackoverflow.com/questions/3035035
复制相似问题