兩個文件躬翁,每個文件里面都有全局對象,那么全局構(gòu)造的順序和編譯時文件名的書寫先后順序一致盯拱。
舉個例子:
t.h
struct T{
int i;
T(int i): i(i) {}
};
t1.cpp
#include <stdio.h>
#include "t.h"
extern T b;
T a(1);
t2.cpp
#include <stdio.h>
#include "t.h"
extern T a;
T b(a.i);
int main(){
printf("t1.cpp %d ", a.i);
printf("t2.cpp %d\n", b.i);
return 0;
}
然后用不同的文件順序分別編譯:
$g++ -std=c++11 t1.cpp t2.cpp -o obj1
$./obj1
打雍蟹ⅰ:t.cpp 1 t2.cpp 1
$g++ -std=c++11 t2.cpp t1.cpp -o obj2
$./obj2
打印:t.cpp 1 t2.cpp 0
可見全局構(gòu)造的順序和編譯時文件名的書寫順序一致狡逢。