
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
26.07.2007, 17:43
|
|||
|---|---|---|---|
Правильно ли это? |
|||
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Правильно ли это ведь virtual T*const Self() и virtual Derived<T>*const Self() - по сути одно и тоже после вывода компилятором типа T и следовательно по правилу виртуальных перегруженных при наследовании функций должны получать на экране: Derived Derived ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2007, 17:56
|
|||
|---|---|---|---|
Правильно ли это? |
|||
|
#18+
Твой оператор static_cast<Base<Derived<int> > > производит "срезку" объекта. Т.е. теперь ты имеешь объект по значению базового класса. Поэтому полиморфизм и не сработал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2007, 18:00
|
|||
|---|---|---|---|
Правильно ли это? |
|||
|
#18+
На самом деле, это пример более популярной ошибки: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Здесь все нормуль, т.к. B мы передаем по ссылке. И полиморфизм нам даст в функции B::func(). Но стоит забыть написать значек &, как мы получаем срезку объекта при копировании. И теперь у нас в функции будет действительно объект класса A и произойдет вызов функции A::func(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2007, 18:08
|
|||
|---|---|---|---|
Правильно ли это? |
|||
|
#18+
AkhТвой оператор static_cast<Base<Derived<int> > > производит "срезку" объекта. Т.е. теперь ты имеешь объект по значению базового класса. Поэтому полиморфизм и не сработал. А если так static_cast<Base<Derived<int> > *>(?derived)->Self(); - то все должно быть ок я так понимаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2007, 18:10
|
|||
|---|---|---|---|
Правильно ли это? |
|||
|
#18+
батракstatic_cast<Base<Derived<int> > *>(?derived)->Self(); вместо ? - & очепятка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2007, 18:13
|
|||
|---|---|---|---|
Правильно ли это? |
|||
|
#18+
батрак AkhТвой оператор static_cast<Base<Derived<int> > > производит "срезку" объекта. Т.е. теперь ты имеешь объект по значению базового класса. Поэтому полиморфизм и не сработал. А если так static_cast<Base<Derived<int> > *>(?derived)->Self(); - то все должно быть ок я так понимаю? Да, думаю, так срезки не будет. Но дело в том, что тебе не должен быть нужным static_cast. Понижение по иерархии в С++ допускается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2007, 18:16
|
|||
|---|---|---|---|
Правильно ли это? |
|||
|
#18+
Спасиб ЗАЧОТ. Вижу в полиморфизме ты разобрался .. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2007, 18:22
|
|||
|---|---|---|---|
Правильно ли это? |
|||
|
#18+
батракСпасиб ЗАЧОТ. Вижу в полиморфизме ты разобрался .. Аж засмущался. Вижу ты теперь тоже. Если не секрет для чего такая конструкция? Не встречал для чего это можно было бы применить: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2007, 18:31
|
|||
|---|---|---|---|
Правильно ли это? |
|||
|
#18+
Akh батракСпасиб ЗАЧОТ. Вижу в полиморфизме ты разобрался .. Аж засмущался. Вижу ты теперь тоже. Если не секрет для чего такая конструкция? Не встречал для чего это можно было бы применить: Код: plaintext 1. Читаю Страуструпа Языкпрограммирования С++ стр 396 гл.13.6 Наследование и шаблоны. Преимущества такого наследования шаблонных классов я еще не осознал - вот и разбираюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.07.2007, 00:05
|
|||
|---|---|---|---|
Правильно ли это? |
|||
|
#18+
батракПреимущества такого наследования шаблонных классов я еще не осознал - вот и разбираюсь.Осознать преимущество сложно... Намного проще осознать недостатки. Слишком большое количество вложенностей постоянно открыто в исходном тексте, слишком много букв надо писать чтобы объявить переменную и слишком сложно будет расширять всю эту гирлянду шаблонов если понадобиться. Шаблоны на мой взгляд вообще совершенно лишняя вещь в языке... еще и наследовать их? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=57&mobile=1&tid=2028463]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
190ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 490ms |

| 0 / 0 |
