Шаблоны C ++ и распределение памяти - PullRequest
0 голосов
/ 26 апреля 2019

Мне был задан вопрос об истинности или ложности:

"Компилятор создает экземпляр шаблона функции в памяти, как только он встречает определение шаблона функции".

Мое пониманиеШаблоны в том, что компилятор будет генерировать необходимый код, когда он читает определение функции.Я не уверен в распределении памяти.Будет ли это правда или ложь?

1 Ответ

1 голос
/ 27 апреля 2019

Для наглядности:

Шаблон не является кодом. Это рецепт для генерации кода. Этот код генерируется в первый раз, когда другой код использует код, который будет создан шаблоном.

Таким образом, функция шаблона становится действительной, только когда ее использует другой код (вызывает ее или получает ее адрес).

Шаблон функции определение - это рецепт написания кода в функции.

Если мы предположим, что под «памятью» спрашивающий подразумевает «(возможно, виртуальное) хранилище, в котором находится программный код», то я думаю, что я отвечу false .

Это потому, что функция не пишется, когда компилятор встречает определение шаблона функции, она записывается при первом использовании другим кодом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...