![]() |
| | |||||||
| Регистрация | Правила | Блоги | Пользователи | Социальные группы | Поиск | Сообщения за день | Все разделы прочитаны |
| |
![]() |
| |
| | #1 | ||||||
| taras atavin Нарушитель Регистрация: 24.11.2009 Адрес: Где то в сетке
Сообщений: 11,931 Репутация: 1080 (736) |
| ||||||
| | |||||||
| Другие темы раздела | |
| C++ Как созадть такой экземпляр? Пусть есть класс: class A { protected: type field; .... }; а выше описан тип (возможно класс, или структура) type, или макрос type - синоним существующего (возможно стандартного) типа. В классе нет открытых членов, прямо, или косвенно пишуших член field. Как создать экземпляр класса A с.... Как созадть такой экземпляр? | Разработка класса C++ Разработать класс описывающий множество точек на плоскости, определить для экземпляров класса операцию объединения множество и операция пересечение множеств. Реализовать метод возвращающий периметр многоугольника покрывающий все множество точек и имеющий наименьшую возможную площадь. Предусмотреть.... Разработка класса |
| | #2 | |
| CyBOSSeR Форумчанин Эксперт C++ Регистрация: 06.03.2009 Адрес: Санкт-Петербург
Сообщений: 3,781 Репутация: 2032 (1467) | | |
| | ||
| | #3 | |||||||||||
| Mr.X Форумчанин Эксперт C++ Регистрация: 03.05.2010 Адрес: Москва
Сообщений: 1,002 Репутация: 1015 (677) |
Вообще-то в C++ термин «инстанцирование» применяется к шаблонам. Шаблон определяет семейство классов или функций. Результат инстанцирования этого шаблона с указанием его аргументов – класс или функция. Например, вот это инстанцирование:
| |||||||||||
| | ||||||||||||
| | #4 | |
| Deviaphan Делаю внезапно и красиво Эксперт C++ Регистрация: 22.03.2011 Адрес: http://coin3d-ru.lj.ru
Сообщений: 3,288 Репутация: 1010 (976) | Не только. Инстанцирование - создание экземпляра класса. В контексте шаблона речь идёт также и о генерации кода для поддержки соответствующего типа. Для не шаблонных классов, просто создание экземпляра. Добавлено через 19 минут Очень сомневаюсь. Но проверить не получается.))) | |
| | ||
| | #5 | |
| Mr.X Форумчанин Эксперт C++ Регистрация: 03.05.2010 Адрес: Москва
Сообщений: 1,002 Репутация: 1015 (677) | | |
| | ||
| | #6 | |
| Evg Форумчанин Эксперт C++ Автор FAQ | Нет, не так. Если ты НЕ создаёшь экземпляр класса, то методы класса всё равно попадут в код (если они не inline). А вот если ты не создашь экземпляр чего-либо от шаблона, то код для этого шаблона не сгенерируется вообще. Если ты используешь лишь некоторые методы шаблонного класса, то неиспользуемые методы в код так же не попадут. Инстанциация по своей сути эквивалентна подстановке макроса. Сам макрос - это не есть материальный код, а всего лишь текстовое описание, и только использование этого макроса превращает описание в исходник (который уже превратится в код)
| |
| | ||
| | #7 | |
| Deviaphan Делаю внезапно и красиво Эксперт C++ Регистрация: 22.03.2011 Адрес: http://coin3d-ru.lj.ru
Сообщений: 3,288 Репутация: 1010 (976) | Как уже написал Evg, код будет сгенерирован только для тех методов, которые вызываются. В данном случае объявлен псевдоним типа, но никаких методов не вызывается и экземпляров не создаётся. Т.е. никакого кода сгенерировано не будет. И непонятно, что именно компилятор сделает? В общем я не могу спорить, т.к. не могу написать тестовый пример.( Добавлено через 25 минут Я к тому, что без создания объекта инстанцирования вообще нет.) И, что термин инстанцирование применим не только к шаблонам. | |
| | ||
| | #8 | |
| Mr.X Форумчанин Эксперт C++ Регистрация: 03.05.2010 Адрес: Москва
Сообщений: 1,002 Репутация: 1015 (677) | Ну, что сделает компилятор – это должно волновать разработчиков этого компилятора. А по стандарту инстанцирование шаблона – это применение к его имени списка аргументов в угловых скобках. При определении типа и генерируется определение этого типа (в данном случае класса). У Страуструпа написано: «из шаблона-класса и набора аргументов шаблона компилятору нужно сгенерировать и определение класса и определения его используемых функций-членов». Так как использование других членов (не функций) специально не отслеживается, а они могут быть использованы в любой момент, то определение класса генерируется в любом случае. Добавлено через 11 минут А вот тут у вас пока недопонимание. Инстанцирование - это создание типа или функции из шаблона. При чем тут объекты? | |
| | ||
| | #9 | |
| Deviaphan Делаю внезапно и красиво Эксперт C++ Регистрация: 22.03.2011 Адрес: http://coin3d-ru.lj.ru
Сообщений: 3,288 Репутация: 1010 (976) | | |
| | ||
| После регистрации реклама в сообщениях будет скрыта | |
| | #10 | |
| ForEveR Форумчанин Эксперт C++ Регистрация: 24.06.2010 Адрес: Москва
Сообщений: 7,931 Репутация: 4944 (2738) | Deviaphan, Создание экземпляра класса, но не объекта. | |
| | ||
![]() |
| Похожие темы | |
| Тема | Автор |
| 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 |
| Опции темы | |
| |
| |