Всегда ли методы классов C ++, определенные в заголовке, встроены?

Изменить : Я восстановил исходный заголовок, но на самом деле я должен был спросить, это: «Как компоновщики 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, которое предотвращает столкновение отдельных экземпляров объекта метода друг с другом?

9
задан NullUserException 5 December 2011 в 23:18
поделиться