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