Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
neurosis
0 / 0 / 0
Регистрация: 18.09.2009
Сообщений: 15
#1

Явное создание экземляра (шаблоны функций) - C++

15.11.2011, 19:18. Просмотров 1232. Ответов 7
Метки нет (Все метки)

Допустим есть шаблон
C++
1
2
template<typename T> void foo(T);
...
Для чего может понадобиться делать явное создание экземпляра?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2011, 19:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Явное создание экземляра (шаблоны функций) (C++):

Шаблоны функций - C++
тема: Шаблони функції Помогите написпть код програми на Turbo C++ Теоретичні відомості: за допомогою шаблона функції можна...

Шаблоны функций - C++
Пытаюсь разобраться в шаблонах функций. Написал такой код, не работает: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace...

Шаблоны функций - C++
Надо в этом задании добавить &quot;шаблоны ф-ций&quot;, помогите пжл Задачи надо переписывать в текст сообщения!!! Одно сообщение - одна...

Шаблоны функций - C++
Rififi, привет какой у тебя емеил Добавлено через 58 минут 9 секунд тема: Шаблони функції Помогите написпть код програми на...

Шаблоны функций - C++
не совсем понимаю, как работают шаблоны функций , в учебнике только дан пример и не объяснено ниче( САма программа готовая есть, надо...

Шаблоны функций - C++
Добрый вечер! less.h #pragma once #include &quot;StdAfx.h&quot; //preconditions: //defined operator&lt; template &lt;typename elemType&gt; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Сыроежка
Заблокирован
15.11.2011, 19:22 #2
Цитата Сообщение от neurosis Посмотреть сообщение
Допустим есть шаблон
C++
1
2
template<typename T> void foo(T);
...
Для чего может понадобиться делать явное создание экземпляра?
По нескольким причинам. Во-первых, это играет роль при выборе перегруженных функций, так как явное специализация функции имеет преимущество перед шаблонной.
Во-вторых, специализация функции может отличаться по реализации от шаблонной.
В-третьих,это упрощает работу компилятору и редактору связей. Например, вместо export шаблона компилятор может подставить конкретную реализацию функции.
0
neurosis
0 / 0 / 0
Регистрация: 18.09.2009
Сообщений: 15
15.11.2011, 19:47  [ТС] #3
Цитата Сообщение от Сыроежка Посмотреть сообщение
По нескольким причинам. Во-первых, это играет роль при выборе перегруженных функций, так как явное специализация функции имеет преимущество перед шаблонной.
Во-вторых, специализация функции может отличаться по реализации от шаблонной.
В-третьих,это упрощает работу компилятору и редактору связей. Например, вместо export шаблона компилятор может подставить конкретную реализацию функции.
Не, зачем явная специализация нужна понятно. Я спрашивал про это
C++
1
template void foo<int>(int);
Т.е. тут создается экземпляр для int по шаблону.
0
Сыроежка
Заблокирован
15.11.2011, 19:49 #4
Цитата Сообщение от neurosis Посмотреть сообщение
Не, зачем явная специализация нужна понятно. Я спрашивал про это
C++
1
template void foo<int>(int);
Т.е. тут создается экземпляр для int по шаблону.
Так я вам про это и написал! Что не понятно-то?!!! Это есть специализация функции для целочисленного параметра. зачем это сделано, я вам описал.
0
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1287 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
15.11.2011, 19:52 #5
Цитата Сообщение от neurosis Посмотреть сообщение
Т.е. тут создается экземпляр для int по шаблону.
Уже написали. Это единственный способ экспортировать шаблонную функцию из библиотеки.
Экспорт шаблонов практически никто реализовать не смог и в новом стандарте эту теоретическую возможность убрали. Поэтому теперь явное инстанцирования шаблонной функции это единственная возможность её экспорта.
0
neurosis
0 / 0 / 0
Регистрация: 18.09.2009
Сообщений: 15
15.11.2011, 21:06  [ТС] #6
Цитата Сообщение от Deviaphan Посмотреть сообщение
экспортировать шаблонную функцию из библиотеки
Сори за нубство, но что это значит?)
Разве шаблоны функций не в хедерах определяются и затем эти хедеры инклюдят нуждающиеся в оных функциях файлы?

Добавлено через 8 минут
В-третьих,это упрощает работу компилятору и редактору связей. Например, вместо export шаблона компилятор может подставить конкретную реализацию функции.
Ну в итоге-то ведь один код генерируется? Или я не прав?
0
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1287 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
16.11.2011, 06:07 #7
Цитата Сообщение от neurosis Посмотреть сообщение
что это значит?
Это значит, что если хочешь разместить код этих функций в DLL, а не открывая их код пользователю, то сделать это можно только явно инстанцировав функции для конкретных типов.
1
Artimosha
0 / 0 / 0
Регистрация: 30.06.2013
Сообщений: 12
16.07.2013, 01:50 #8
Цитата Сообщение от Сыроежка Посмотреть сообщение
По нескольким причинам. Во-первых, это играет роль при выборе перегруженных функций, так как явное специализация функции имеет преимущество перед шаблонной.
Во-вторых, специализация функции может отличаться по реализации от шаблонной.
В-третьих,это упрощает работу компилятору и редактору связей. Например, вместо export шаблона компилятор может подставить конкретную реализацию функции.
явное создание экземпляра и явная специализация - это разные вещи.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2013, 01:50
Привет! Вот еще темы с ответами:

Шаблоны функций - C++
Используя шаблоны функций, определите есть ли в данном двумерном массиве число A среди элементов массива. Код программы есть, но он без...

Шаблоны функций. - C++
Написать шаблон функции, осуществляющей обработку линейного массива. Тип и размер массива передаются как параметры шаблона ( &lt;class T, int...

шаблоны функций - C++
Помогите пожалуйста с задачей: Разработайте программу, в которой реализовано нахождение количества пар одинаковых по значению соседних...

Шаблоны функций - C++
Привет всем, я новичок в С++, хо4у изучать этот язык, буду делать через VS 2008 прошу вас придумать какие нибудь не сильно сложные задачки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.07.2013, 01:50
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru