CyberForum.ru - Форум программистов и сисадминов
Вернуться   Форум программистов и сисадминов CyberForum.ru > Форум программистов > Форум C++

Ответ Создать новую тему
 
Старый 07.04.2011, 08:21   #1
taras atavin
Нарушитель
 
Регистрация: 24.11.2009
Адрес: Где то в сетке
Сообщений: 11,931
Репутация: 1080 (736)
По умолчанию Что такое инстанцирование?

Код C++
1
2
3
4
5
class A
{
 ...
};
A a; // Это уже инстанцирование A?
taras atavin вне форума
Другие темы раздела
C++ Как созадть такой экземпляр?
Пусть есть класс: class A { protected: type field; .... }; а выше описан тип (возможно класс, или структура) type, или макрос type - синоним существующего (возможно стандартного) типа. В классе нет открытых членов, прямо, или косвенно пишуших член field. Как создать экземпляр класса A с.... Как созадть такой экземпляр?
Разработка класса C++
Разработать класс описывающий множество точек на плоскости, определить для экземпляров класса операцию объединения множество и операция пересечение множеств. Реализовать метод возвращающий периметр многоугольника покрывающий все множество точек и имеющий наименьшую возможную площадь. Предусмотреть.... Разработка класса
Старый 07.04.2011, 08:24   #2
CyBOSSeR
Форумчанин
Эксперт C++
 
Аватар для CyBOSSeR
 
Регистрация: 06.03.2009
Адрес: Санкт-Петербург
Сообщений: 3,781
Репутация: 2032 (1467)
По умолчанию Re: Что такое инстанцирование?

taras atavin, создание экземпляра класса.
Цитата Сообщение от taras atavin Посмотреть сообщение
Это уже инстанцирование A?
Да.
CyBOSSeR вне форума
Старый 08.04.2011, 07:27   #3
Mr.X
Форумчанин
Эксперт C++
 
Аватар для Mr.X
 
Регистрация: 03.05.2010
Адрес: Москва
Сообщений: 1,002
Репутация: 1015 (677)
По умолчанию Re: Что такое инстанцирование?

Вообще-то в C++ термин «инстанцирование» применяется к шаблонам.
Шаблон определяет семейство классов или функций. Результат инстанцирования этого шаблона с указанием его аргументов – класс или функция.
Например, вот это инстанцирование:
Код C++
1
typedef std::complex<int>  T_int_complex;
И вот это тоже:
Код C++
1
std::complex<char> char_c;
Mr.X вне форума
Старый 08.04.2011, 08:22   #4
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 
Аватар для Deviaphan
 
Регистрация: 22.03.2011
Адрес: http://coin3d-ru.lj.ru
Сообщений: 3,288
Репутация: 1010 (976)
По умолчанию Re: Что такое инстанцирование?

Цитата Сообщение от Mr.X Посмотреть сообщение
Вообще-то в C++ термин «инстанцирование» применяется к шаблонам.
Не только. Инстанцирование - создание экземпляра класса. В контексте шаблона речь идёт также и о генерации кода для поддержки соответствующего типа. Для не шаблонных классов, просто создание экземпляра.

Добавлено через 19 минут
Цитата Сообщение от Mr.X Посмотреть сообщение
Например, вот это инстанцирование:
Очень сомневаюсь. Но проверить не получается.)))
Deviaphan вне форума
Старый 08.04.2011, 08:46   #5
Mr.X
Форумчанин
Эксперт C++
 
Аватар для Mr.X
 
Регистрация: 03.05.2010
Адрес: Москва
Сообщений: 1,002
Репутация: 1015 (677)
По умолчанию Re: Что такое инстанцирование?

Цитата Сообщение от Deviaphan Посмотреть сообщение
Для не шаблонных классов, просто создание экземпляра.
Ну, не знаю где вы это вычитали, но в русском переводе Страуструпа термин «инстанцирование» применяется только к шаблонам.
Цитата Сообщение от Deviaphan Посмотреть сообщение
Цитата Сообщение от Mr.X Например, вот это инстанцирование:

Очень сомневаюсь. Но проверить не получается.)))
И что же тут сомнительного?
Mr.X вне форума
Старый 08.04.2011, 09:05   #6
Evg
Форумчанин
Эксперт C++
Автор FAQ
 
Аватар для Evg
 
Регистрация: 30.03.2009
Сообщений: 9,482
Записей в блоге: 19
Репутация: 10980 (3011)
По умолчанию Re: Что такое инстанцирование?

Цитата Сообщение от Deviaphan Посмотреть сообщение
Инстанцирование - создание экземпляра класса
Нет, не так. Если ты НЕ создаёшь экземпляр класса, то методы класса всё равно попадут в код (если они не inline). А вот если ты не создашь экземпляр чего-либо от шаблона, то код для этого шаблона не сгенерируется вообще. Если ты используешь лишь некоторые методы шаблонного класса, то неиспользуемые методы в код так же не попадут. Инстанциация по своей сути эквивалентна подстановке макроса. Сам макрос - это не есть материальный код, а всего лишь текстовое описание, и только использование этого макроса превращает описание в исходник (который уже превратится в код)
Evg вне форума
Старый 08.04.2011, 10:00   #7
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 
Аватар для Deviaphan
 
Регистрация: 22.03.2011
Адрес: http://coin3d-ru.lj.ru
Сообщений: 3,288
Репутация: 1010 (976)
По умолчанию Re: Что такое инстанцирование?

Цитата Сообщение от Mr.X Посмотреть сообщение
И что же тут сомнительного?
Как уже написал Evg, код будет сгенерирован только для тех методов, которые вызываются. В данном случае объявлен псевдоним типа, но никаких методов не вызывается и экземпляров не создаётся. Т.е. никакого кода сгенерировано не будет. И непонятно, что именно компилятор сделает? В общем я не могу спорить, т.к. не могу написать тестовый пример.(

Добавлено через 25 минут
Цитата Сообщение от Evg Посмотреть сообщение
Нет, не так.
Я к тому, что без создания объекта инстанцирования вообще нет.) И, что термин инстанцирование применим не только к шаблонам.
Deviaphan вне форума
Старый 08.04.2011, 10:15   #8
Mr.X
Форумчанин
Эксперт C++
 
Аватар для Mr.X
 
Регистрация: 03.05.2010
Адрес: Москва
Сообщений: 1,002
Репутация: 1015 (677)
По умолчанию Re: Что такое инстанцирование?

Цитата Сообщение от Deviaphan Посмотреть сообщение
Т.е. никакого кода сгенерировано не будет. И непонятно, что именно компилятор сделает?
Ну, что сделает компилятор – это должно волновать разработчиков этого компилятора. А по стандарту инстанцирование шаблона – это применение к его имени списка аргументов в угловых скобках.
При определении типа и генерируется определение этого типа (в данном случае класса).
У Страуструпа написано: «из шаблона-класса и набора аргументов шаблона компилятору нужно сгенерировать и определение класса и определения его используемых функций-членов».
Так как использование других членов (не функций) специально не отслеживается, а они могут быть использованы в любой момент, то определение класса генерируется в любом случае.

Добавлено через 11 минут
Цитата Сообщение от Deviaphan Посмотреть сообщение
Я к тому, что без создания объекта инстанцирования вообще нет.)
А вот тут у вас пока недопонимание. Инстанцирование - это создание типа или функции из шаблона. При чем тут объекты?
Mr.X вне форума
Старый 08.04.2011, 10:20   #9
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 
Аватар для Deviaphan
 
Регистрация: 22.03.2011
Адрес: http://coin3d-ru.lj.ru
Сообщений: 3,288
Репутация: 1010 (976)
По умолчанию Re: Что такое инстанцирование?

Цитата Сообщение от Mr.X Посмотреть сообщение
При чем тут объекты
При том, что инстанцирование - создание экземпляра, а не типа.
Deviaphan вне форума
После регистрации реклама в сообщениях будет скрыта
Старый 08.04.2011, 10:24   #10
ForEveR
Форумчанин
Эксперт C++
 
Аватар для ForEveR
 
Регистрация: 24.06.2010
Адрес: Москва
Сообщений: 7,931
Репутация: 4944 (2738)
По умолчанию Re: Что такое инстанцирование?

Deviaphan, Создание экземпляра класса, но не объекта.
Инстанцирование (англ. instantiation) — создание экземпляра класса. В отличие от слова «создание», применяется не к объекту, а к классу. То есть, говорят: «(в виртуальной среде) создать экземпляр класса или инстанцировать класс». Порождающие шаблоны используют полиморфное инстанцирование.
ForEveR вне форума
Ответ Создать новую тему

Похожие темы
Тема Автор
C++ Можно ли инстанцирование класса прописать в самом классе?
Можно ли инстанцирование класса прописать в самом классе?
taras atavin
С++ для начинающих Инстанцирование шаблона
Есть шаблонная очередь с использованием vector Как инстанцировать для своего класса, представляющего строку, изготовленную из vector<char>? template <class T> class mydeque { protected: vector<T> first; //первый вектор - используется для вставки в начало очереди vector<T> second;...
kodermax
Windows XP что такое [AD]?
что такое , не пойму на разных сайтах появляется и в постах!
Snoopy
ASP.NET Что такое иис и что такое пвс? почему одно без другого не работает?
вот уже второй день пытаюсь немного разобраться в АСП. накидал небольшую тестовую страничку. но с серверами я ничего не понимаю! что такое иис и что такое пвс? почему одно без другого не работает? что нужно для правильной работы? где удобнее всего разрабатывать асп-страницы? я скачал какой-то...
VitJ
Опции темы

Текущее время: 00:58. Часовой пояс GMT +4.

Компьютерный форум программистов и сисадминов
Powered by vBulletin® Version 3.8.7 PL2
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Рейтинг@Mail.ru Яндекс.Метрика