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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> STL и многопоточность 
:(
    Опции темы
baldina
Дата 17.2.2011, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



borisbn, есть признак: если деструктор не виртуальный, то класс не предназначен для наследования

Цитата(borisbn @  17.2.2011,  16:58 Найти цитируемый пост)
а почему, если я добавлю в deque такие ф-ции ... я "нарушу локическую полноценность" ?

а никто не говорил, что в данном случае что-то нарушится  smile 
в этих функциях ничего страшного нет: они бесполезны, т.к. не расширяют семантику класса.
а как только понадобится захочется создать действительно специализированную версию контейнера (путем наследования), начнутся проблемы: стандартные контейнеры не являются абстрактными классами с точки зрения языка: виртуальные функции использовать нельзя (деструктор невиртуальный), и функции доступа невиртуальные
с другой стороны, стандартные контейнеры являются АТД, и в этом смысле их расширять не требуется.
с третьей: если, скажем, нужно создать стек на основе списка, заимствуя при этом часть функций, технически удобно использовать наследование, но - закрытое. т.е. применить прием С++, не относящийся к ООП. кстати в stl стек так и сделан. 
еще пример: паттерны типа Facade и Adapter(Wrapper) решаются путем агрегирования или закрытого наследования, а полученный класс также не предназначен для наследования

Добавлено через 2 минуты и 27 секунд
Цитата(baldina @  17.2.2011,  18:38 Найти цитируемый пост)
кстати в stl стек так и сделан. 

ща поглядел, и вижу, что нет: стек агрегирует контейнер. а мне казалось я где-то видел закрытое наследование...
PM MAIL   Вверх
mes
Дата 17.2.2011, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



перенесено

Abyx, автор оффтопика уже создал отдельную тему... 


Это сообщение отредактировал(а) mes - 17.2.2011, 19:48


--------------------
PM MAIL WWW   Вверх
Abyx
Дата 17.2.2011, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(baldina @  17.2.2011,  19:38 Найти цитируемый пост)
есть признак: если деструктор не виртуальный, то класс не предназначен для наследования

лолшто?

вообще-то есть статический полиморфизм, aka CRTP, и местами его очень много.
PM MAIL   Вверх
alexvs11
Дата 17.2.2011, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


hell is here
**


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

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



Цитата(Abyx @  17.2.2011,  19:39 Найти цитируемый пост)
лолшто?

в указанном примере не было речи о привлечении каких-либо дополнительных идиом
так что все в рамках приличия
PM MAIL   Вверх
ValeryLaptev
Дата 20.2.2011, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Препод



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

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



Цитата(borisbn @ 17.2.2011,  10:14)
Цитата(volatile @  17.2.2011,  00:22 Найти цитируемый пост)
А вообще наследовать от STL классов есть нехорошо.Лучше их включать в класс в качестве членов.

Цитата(volatile @  17.2.2011,  00:36 Найти цитируемый пост)
и наследовать от STL классов, еще раз, очень не рекомендуется.

volatile, много раз слышал это из разных источников, но не могу понять, почему именно ? Спасибо.

Цитата(alexvs11 @  16.2.2011,  23:51 Найти цитируемый пост)
студийный stl должен быть потокобезопасным

чевойта ?

Не рекомендуется наследовать, так как в стандартных контейнерах деструктор НЕ ЯВЛЯЕТСЯ ВИРТУАЛЬНЫМ.
PM MAIL   Вверх
mes
Дата 20.2.2011, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(ValeryLaptev @  20.2.2011,  10:16 Найти цитируемый пост)
 так как в стандартных контейнерах деструктор НЕ ЯВЛЯЕТСЯ ВИРТУАЛЬНЫМ. 

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


--------------------
PM MAIL WWW   Вверх
azesmcar
Дата 20.2.2011, 12:36 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

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



Цитата(ValeryLaptev @  20.2.2011,  11:16 Найти цитируемый пост)
Не рекомендуется наследовать, так как в стандартных контейнерах деструктор НЕ ЯВЛЯЕТСЯ ВИРТУАЛЬНЫМ. 

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

И кстати обсуждение переехало сюда.

Это сообщение отредактировал(а) azesmcar - 20.2.2011, 12:46
PM   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0505 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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