Когда создаются виртуальные функции-члены класса шаблона? - PullRequest
4 голосов
/ 14 августа 2010

Я знаю, что обычная функция-член шаблонного класса будет создаваться всякий раз, когда она используется впервые. Но это не может быть сделано для виртуальной функции-члена, так как к ней можно получить доступ через указатель базового класса. Означает ли это, что виртуальные функции-члены будут созданы, как только будет создан экземпляр класса шаблона? Если нет, то когда?

Ответы [ 3 ]

6 голосов
/ 14 августа 2010

14.7.1/9 в C ++ 03:

Реализация не должна неявно создавать экземпляр шаблона функции, шаблона элемента, не виртуальной функции-члена, класса-члена или статического члена данных шаблона класса, который не требует создания экземпляра. Не определено, будет ли реализация неявно создавать экземпляр виртуальной функции-члена шаблона класса, если в противном случае функция виртуального члена не будет создана.

1 голос
/ 14 августа 2010

Согласно стандарту C ++ 14.6.4.1/4:

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

1 голос
/ 14 августа 2010

Это определяется реализацией.

Но обычно, когда создается экземпляр класса шаблона, генерируются все члены для нового типа класса.

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