Страницы

Поиск по вопросам

воскресенье, 29 декабря 2019 г.

Как компилятор/линкер обходится без объектных файлов для template-классов?

#cpp #шаблоны_с++ #компиляция #линковка


Собственно в этом вопрос, до неприличия простой, но в гугле не нашел ответа. Компилируя
в qtcreator'e заметил, что для шаблонных классов нет соответствующих .o файлов. Ладно,
понятно, что нет соответствующего .cpp, но ведь по идее шаблонный класс при использовании
динамически генерирует "нормальный" класс с соответствующими типовыми параметрами,
так? И как функции этого класса "попадают" в исполняемый файл без посредничества объектных?
Напрямую? Если объектные файлы так ненеобходимы, то для чего они вообще до сих пор?
    


Ответы

Ответ 1



объектные файлы генерируются не для классов, а для единиц трансляции; тело инстанцированных шаблонов помещается в единицу трансляции, которая их инстанцирует; никто не заставляет явно создавать и использовать объектные файлы, большинство компиляторов позволяют сразу собрать исполняемый файл

Комментариев нет:

Отправить комментарий