这包括三个相互关联的问题:
1) 你究竟是如何得到多个翻译单元的?当然,所有源文件和头文件都会“连接”在一起,否则您最终会得到不属于该“程序”的代码调用代码。翻译单元不就是一个程序吗?
2) 静态对象/类如何针对多个翻译单元工作?如果不同翻译单元中的多个源文件包含一个将创建对象(具有静态数据成员)的 header ,每个翻译单元是否会有一个单独的静态数据成员?
3) 与问题 2 类似,全局变量是否在多个翻译单元之间共享(有点像我暗示它们是单独的程序 - 只是一起编译???)还是全局变量仍然起作用......全局翻译单位?
最佳答案
1) 每个源文件连同它包含的头文件一起称为一个翻译单元。它被编译成一个目标文件。然后链接器最终将所有目标文件连接到最终的可执行文件中。 (简化,但给你一个基本的想法)
2) 链接器将消除拷贝。
3) 是的,见 2)
关于c++ - 静态、全局和多个翻译单元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15259131/