Изменить : Я восстановил исходный заголовок, но на самом деле я должен был спросить, это: «Как компоновщики C ++ обрабатывают методы классов, которые были определены в нескольких объектных файлах»
Скажем, у меня есть класс C ++, определенный в заголовке в следующих строках:
class Klass
{
int Obnoxiously_Large_Method()
{
//many thousands of lines of code here
}
}
Если я компилирую s Например, в коде C ++, который использует Obnoxfully_Large_Method в нескольких местах, в результирующий объектный файл всегда будет встроен код для Obnoxfully_Large_Method или он будет оптимизирован по размеру (например, при использовании g ++ -Os) и создаст один экземпляр Obnoxfully_Large_Method и использовать его как обычную функцию? Если да, то как компоновщики разрешают конфликты между другими объектными файлами, в которых была создана такая же функция ?. Существует ли какое-то загадочное пространство имен С ++ Juju, которое предотвращает столкновение отдельных экземпляров объекта метода друг с другом?