编辑:我已经恢复了原始标题,但是我真正应该问的是:“C++链接器如何处理在多个对象文件中定义的类方法”
假设我有一个在头文件中定义的 C++ 类的示例,代码如下:
class Klass
{
int Obnoxiously_Large_Method()
{
//many thousands of lines of code here
}
}
如果我编译一些使用“Obnoxiously_Large_Method”代码的C ++代码,会不会始终内联“Obnoxiously_Large_Method”的代码,并优化大小(例如,使用g ++ -Os),并创建一个“Obnoxiously_Large_Method”的单个实例并像常规函数一样使用它?如果是这样,链接器如何解决其他已实例化相同函数的对象文件之间的冲突?是否有某种奥秘的C++命名空间Juju,可以使方法的单独对象实例彼此不发生冲突?