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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Класс, который содержит, объект для класса других типов 
V
    Опции темы
mes
Дата 11.11.2008, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Lycifer @  11.11.2008,  14:59 Найти цитируемый пост)
 - это мало? по крайне мери это намного медленее чем вызов обычной функции без фычесления адресса.

В вашем случае один Вызов виртуальной функции плюс свитч, что ставит скорости на один уровень.

Цитата(Lycifer @  11.11.2008,  14:59 Найти цитируемый пост)
4) Динамический полиморфизм стал классическим  smile  - и какая здесь связь?(

Речь идет не о типе полиморфизма, динамическом или статическом, а о способе использования.
Классический - линейный  - выбор реализации функции зависит от типа объекта
Двойная диспатчеризация - матричный - выбор основывается на типах двух объектов.
Это применимо как к статическому полиморфизму, так и и к динамическому.
Динамический же мы используем в нашем задании потому, что нам требуется хранить все наши типы в одном контейнере, и использовать элементы, зная базовый интерфейс.


Цитата(Lycifer @  11.11.2008,  14:59 Найти цитируемый пост)
 вот это ООП ........

ООП отличается от процедурного не тем, что в первом используются классы, а тем логика выполнения задания объектом локализована. 
Приведенные функции в примере являются вспомогательными. И не "покушаются"  внутренних особеностей объекта.

Это сообщение отредактировал(а) mes - 11.11.2008, 16:10


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


Бывалый
*


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

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



Цитата(Rickert @  30.10.2008,  07:30 Найти цитируемый пост)
Теперь смысл в следующем: как мне добавлять в список объекты типа demoClass, demoClass2, чтобы потом, внутир classContainer, распозновать их по типу и работать с ними? Придумал только вместо списка делать указатель типа void.

Код
aList<baseClass*> list;//условный класс списка

Тока конечно еще лучше, как предложили юзать boost::ptr_list, т.к. он более удобен для работы с указателями и сам удаляем обьекты.
--------------------
We have no begining, we have no end. We are infinite.
PM MAIL   Вверх
mes
Дата 11.11.2008, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Lycifer @  11.11.2008,  14:59 Найти цитируемый пост)
А если выполнить надо операции не имеющиго прямого связаности с классом? А тогда все просто мы просто зделаем прямую зависимоть нашего VISITOR от старонних действий!! 

а кто-то говорил , что надо запихивать все в один класс ? кесарю - кесарево  smile 


Цитата(Lycifer @  11.11.2008,  14:59 Найти цитируемый пост)
1)Локализация логики  -  чего? не она негодится мы же программисты серьёзные мы все зделаем в одном VISITOR'S(набит как самосат но работает......)
 см. предыдуший абзац ) 

Цитата(Lycifer @  11.11.2008,  14:59 Найти цитируемый пост)

2)VISITOR'S он способен выполнить действия которые были у него внутри, то и есть что бы он что-то еще выполнил лезим во все классы, а что?

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

 Визитор всего лишь switch. И нужен для того,
1. чтоб не было такого :
Цитата(Lycifer @  7.11.2008,  13:43 Найти цитируемый пост)
 SomeFunctionClassChildren1((ClassChildren1)obj);//здесь можно и явное приведение

2. чтоб при изменении иерархии, компилятор бы визжал бы, а не позволял бы скомпилировать неправильный код, из за того что программист не удержал в памяти все места сравнения.
3. чтоб вызовы были определены и проверены на стадии компиляции, a не оставлялась возможность ошибки рантайма :
Цитата(Lycifer @  7.11.2008,  13:43 Найти цитируемый пост)
  default:
     assert(false);

 smile 





Это сообщение отредактировал(а) mes - 11.11.2008, 16:09


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


Опытный
**


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

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



складывается впечатление, что Lycifer слышит звон, да не знает где он  smile 


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

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

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

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

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


 




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


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

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