Скажем, у меня есть файл заголовка, и предположим, что макросы дублирования позаботятся о: f1.h:
Object& getObject() {
static Object obj;
return obj;
}
В любом месте, где этот заголовок включен, модуль перевода будет иметь свою собственную копиюOBJ.Итак, если a.cpp, b.cpp и ch включают этот заголовок, obj будет создан 3 раза?
Теперь, если вместо этого у меня будет следующее:
f2.h:
Object& getObject();
f2.cpp:
#include <f2.h>
Object& getObject() {
static Object obj;
return obj;
}
В этом случае мой заголовок включается, но символ создается только в файле cpp.Следовательно, компоновщик находит только один статический объект obj, созданный в файле cpp, и каждый модуль перевода, который ссылается на файл .h, получает этот символ?
Это правильная интуиция в отношении того, что происходит или существуетбольше в игре здесь?