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

108
31 марта 2021, 00:20

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

Answer 1
  1. объектные файлы генерируются не для классов, а для единиц трансляции;
  2. тело инстанцированных шаблонов помещается в единицу трансляции, которая их инстанцирует;
  3. никто не заставляет явно создавать и использовать объектные файлы, большинство компиляторов позволяют сразу собрать исполняемый файл
READ ALSO
WinAPI. Перенос строки в DrawText

WinAPI. Перенос строки в DrawText

Есть окно, которое выводит конвертированную переменную int в строку, и все это повторяется в цикле (Должно быть 10 строк одной под другой)Код...

129
Зачем нужна условная компиляция?

Зачем нужна условная компиляция?

Она позволит включать различные части кода программы во время компиляции, отладки или непосредственно выполнения?

95
С++ Передать в качестве компаратора метод

С++ Передать в качестве компаратора метод

Как в качестве компаратора отправить метод из класса?

102
Как отметить радио в добавленном элементе?

Как отметить радио в добавленном элементе?

в документ добавился html с radiobutton таким образом:

135