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

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

Войти
Регистрация
Восстановить пароль
 
andrejap
13 / 13 / 1
Регистрация: 21.04.2013
Сообщений: 245
#1

Явное создание экземпляра класса и явная специализация шаблона класса - C++

09.05.2014, 13:48. Просмотров 855. Ответов 3
Метки нет (Все метки)

Всем добрый день!
Не могу разобраться - эти две технологии дают один и тот же результат? В каких случаях применять одно и другое? Растолкуйте, плз!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.05.2014, 13:48     Явное создание экземпляра класса и явная специализация шаблона класса
Посмотрите здесь:

Явная специализация шаблона класса и ее методы - C++
На 93 строке явная специализация шаблона класса под char. Но я нигде не могу найти, как мне правильно записать методы для него. Если тело...

Явная специализация класса - C++
Код переписан из книги, однако не компилируется. Что не так со специализацией класса? // Явная специализация класса. #include...

Явная специализация шаблонного класса - C++
Всем привет, не могу разобраться с определением функций-членов для явной специализации Имеем след. код: template <class Type> class A...

Создание экземпляра шаблона класса - C++
Есть код: #include <iostream> #include <string> #include <vector> //======================================== template...

Специализация шаблона класса - C++
Имеется задание: Создать свой шаблонный класс – динамический массив (myvector). Создать методы этого класса. Инстанцировать для своего...

Явная специализация шаблона - C++
Здравствуйте. Не совсем разобрася с сабжем. Например, если есть кусочек кода: template <typename T> void func(T &blue, T &red); ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,183
Завершенные тесты: 1
09.05.2014, 15:01     Явное создание экземпляра класса и явная специализация шаблона класса #2
Специализация шаблона используется тогда,
когда для каких-то конкретных типов переменных нужно создать код, отличный от шаблонного.
А создание экземпляра класса выполняется по предложенному шаблону.
andrejap
13 / 13 / 1
Регистрация: 21.04.2013
Сообщений: 245
10.05.2014, 10:55  [ТС]     Явное создание экземпляра класса и явная специализация шаблона класса #3
zss, дело в том, что вот у меня в учебнике (С. Прата, "Язык программирования C++") написано:
"Для шаблонов классов, как и шаблонов функций, возможны неявные создания экземпляров, явные создания экземпляров и явные специализации, которые все вместе также называются специализациями. Шаблон описывает класс через обобщенный тип, а специализация - это объявление класса, сгенерированное для конкретного типа."

Да, то есть как Вы говорите, в таком случае для:
C++
1
2
template<typename T, typename V>
class Gcl { T val; V obj; };
неявным созданием экземпляра будет использование объявления:
C++
1
Gcl<char*, bool> tree;
явной специализацией определение:
C++
1
2
3
4
template <> class Gcl<std::string, bool>
{
//...
};
теперь объявление
C++
1
Gcl<std::string, bool> tree_n;
будет использовать класс сгенерированный этой специализацией.

Но что же такое явное создание экземпляра? В книге приведен пример:
C++
1
template class ArrayTP<string, 100>;
"В этом случае компилятор генерирует определение класса, включая определения методов, даже если не создаются или упоминаются объекты класса. ..."
Для чего эта вещь используется?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2016, 19:36     Явное создание экземпляра класса и явная специализация шаблона класса
Еще ссылки по теме:

Явная специализация шаблона - C++
Здравствуйте, подскажите, пожалуйста, почему не выполняется неявное приведение фактических параметров к формальным при вызове функции для...

Явная специализация шаблона - C++
Столкнулся с проблемой при изучении шаблонов. Задача: написать шаблонную функцию, которая принимает в качестве аргумента массив...

Явная специализация шаблона. Ошибки - C++
Помогите исправить ошибки. Надо для шаблонного класса сделать специализацию float #include &lt;iostream&gt; #include &lt;stdlib.h&gt; ...

Явная специализация шаблона для пользовательского типа - C++
Здравствуйте! Сразу извиняюсь если вопрос покажется глупым, перечитал справочник по шаблонам, но так и не нашёл ответ. Есть шаблон класса: ...

Явная специализация шаблона функции - ошибка на этапе компиляции - C++
Всем привет, читаю книгу С. Прата и пытаюсь скомпилировать шаблонную функцию с явной специализацией, но на этапе компиляции вылезают...

Создание экземпляра класса до определения класса - C++
Здравствуйте. Решил создать класс Console для более удобного изменения цвета текста, выводимого в консоли, и еще некоторых действий. (Или...


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

Или воспользуйтесь поиском по форуму:
kzru_hunter
1090 / 765 / 58
Регистрация: 01.02.2011
Сообщений: 1,775
Записей в блоге: 1
25.02.2016, 19:36     Явное создание экземпляра класса и явная специализация шаблона класса #4
Цитата Сообщение от andrejap Посмотреть сообщение
Для чего эта вещь используется?
В этом случае компилятор генерирует определение класса, включая определения методов, даже если не создаются или упоминаются объекты класса
Вот как раз для этого. Эта строка заставляет компилятор всегда генерировать код определения шаблонного класса, включая все его методы.
Без этой строчки компилятор по частицам и по мере необходимости генерировал бы код для шаблонного класса: т.е. в случае, когда он встречает в коде создание объекта шаблонного класса, то только в этом случае генерирует код определения шаблонного класса, но не полностью (игнорируя его методы). И если затем в коде встречается вызов метода, то компилятор и для него отдельно генерирует определение.
Yandex
Объявления
25.02.2016, 19:36     Явное создание экземпляра класса и явная специализация шаблона класса
Ответ Создать тему
Опции темы

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