Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Stl: в чем плюсы шаблонов? 
:(
    Опции темы
Lazin
Дата 28.5.2009, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(zim22 @  28.5.2009,  12:24 Найти цитируемый пост)

Это и есть дефект

это дефект в мозгах программиста, в данном случае программист написал шаблонный конструктор, принимающий один аргумент, но не написал конструктор копирования
PM MAIL Skype GTalk   Вверх
zim22
Дата 28.5.2009, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(Lazin @  28.5.2009,  12:56 Найти цитируемый пост)
но не написал конструктор копирования

может он и написал, т.к. в приведённом коде Wrapper'a есть строчки вида:
Код

// ...

плюс перед примером написано:
Цитата

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

а пример он уже приводил после этого уточнения. и вы всё-равно думаете, что он мог так протупить? smile

Цитата

Прикрепляемые классы(bolt-ins) - это шаблонные классы со след.свойствами:


  • Они являются производными от своего основного типа параметризации(обычно с открытым доступом к нему).

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

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




Это сообщение отредактировал(а) zim22 - 28.5.2009, 13:36


--------------------
PM MAIL   Вверх
azesmcar
Дата 28.5.2009, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата

к счастью многих на нормальном компиляторе стандартные контейнеры такого не допустят.  smile 

Да, комитет немало усилий к этому приложил, но микрософту на это разумеется наплевать. Студия 2008 - даже варнинг не выдает.
PM   Вверх
zim22
Дата 28.5.2009, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(azesmcar @  28.5.2009,  13:58 Найти цитируемый пост)
Да, комитет немало усилий к этому приложил, но микрософту на это разумеется наплевать. Студия 2008 - даже варнинг не выдает.

варнинг не выдаёт, зато выдаёт эррор.
http://forum.vingrad.ru/index.php?showtopi...t&p=1820136


--------------------
PM MAIL   Вверх
azesmcar
Дата 28.5.2009, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(zim22 @  28.5.2009,  14:52 Найти цитируемый пост)

варнинг не выдаёт, зато выдаёт эррор.
http://forum.vingrad.ru/index.php?showtopi...t&p=1820136

дальше этого не проверял smile 
Код

std::vector< std::auto_ptr<int> > apc;

насчет конструктора..интересно это у них случайно так вышло или как? smile 

Это сообщение отредактировал(а) azesmcar - 28.5.2009, 15:02
PM   Вверх
Lazin
Дата 28.5.2009, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(zim22 @  28.5.2009,  13:29 Найти цитируемый пост)
а пример он уже приводил после этого уточнения. и вы всё-равно думаете, что он мог так протупить?

во первых, я это не читал(и вообще, кто это?)
во вторых, я подумал, что там вызывается s2(s1), а не s2(ss)
PM MAIL Skype GTalk   Вверх
azesmcar
Дата 28.5.2009, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



добавлю...я эту тему впервые вижу smile 
http://forum.vingrad.ru/index.php?showtopi...t&p=1820136
Цитата

Человек может не знать о том что хранить auto_ptr в контейнерах нельзя

про auto_ptr просто так написал, совпало...ни на кого не намекал smile 
PM   Вверх
Alexeis
Дата 28.5.2009, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 12
Всего: 459



Цитата(azesmcar @ 28.5.2009,  14:17)
добавлю...я эту тему впервые вижу smile 
http://forum.vingrad.ru/index.php?showtopi...t&p=1820136
Цитата

Человек может не знать о том что хранить auto_ptr в контейнерах нельзя

про auto_ptr просто так написал, совпало...ни на кого не намекал smile

Но ведь это же неудобно, при работе со списками, сложно следить за памятью. Кстати это касается и shared_ptr тоже?


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
azesmcar
Дата 28.5.2009, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(Alexeis @  28.5.2009,  16:11 Найти цитируемый пост)
Но ведь это же неудобно

Удобно, ни удобно...auto_ptr для этого не предназначен.

Цитата(Alexeis @  28.5.2009,  16:11 Найти цитируемый пост)
Кстати это касается и shared_ptr тоже? 

ничего подобного.
Цитата

A resource can be owned by more than one shared_ptr object


Alexeis
проблема использования std::auto_ptr состоит в этом
Код

std::auto_ptr<int> obj(new int);
std::cout << obj.operator ->() << std::endl;
std::auto_ptr<int> tmp = obj;
std::cout << obj.operator ->() << std::endl; //тут указатель хранимый в std::auto_ptr равен 0

а таких кодов в СТЛ немало.
к примеру после сортировки контейнера некоторые ваши данные могут просто напросто потеряться и вместо них появится жирный нул. smile 

Это сообщение отредактировал(а) azesmcar - 28.5.2009, 16:25
PM   Вверх
zim22
Дата 28.5.2009, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(Lazin @  28.5.2009,  15:09 Найти цитируемый пост)
во первых, я это не читал(и вообще, кто это?)

Досье


--------------------
PM MAIL   Вверх
DrHex
Дата 29.5.2009, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 2.5.2009

Репутация: нет
Всего: нет



Хочется высказатся на счет шаблонов:

- При применени шаблонов код растет не всегда. К примеру пишем в программе какое то количство функции, так вот если функция не           
    используется  не факт что компилятор её удалит, а вот с шаблонами он просто не станет её проверять.

- Помню были как то у меня веселья с шаблонамми и dll(копии классов в dll и модуле который использовал dll, код писал не я но мне пришлось 
             дописовать, тогда отладка была совсем не понятной).

- Так же шаблонные код плохо анализируется, хотя писать проще.

--------------------
google.com и это все.
PM MAIL   Вверх
Alexeis
Дата 29.5.2009, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 12
Всего: 459



Цитата(DrHex @  29.5.2009,  08:50 Найти цитируемый пост)
- При применени шаблонов код растет не всегда. К примеру пишем в программе какое то количство функции, так вот если функция не           
    используется  не факт что компилятор её удалит, а вот с шаблонами он просто не станет её проверять.

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


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Alca
Дата 29.5.2009, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Цитата

Неправда, если функция не используется, то компилятор ее всегда удаляет

Я такле заметил на VC++ 2008


--------------------
PM WWW ICQ Skype Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0601 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.