|
|
|
Правильно ли это?
|
|||
|---|---|---|---|
|
#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:43 |
|
||
|
Правильно ли это?
|
|||
|---|---|---|---|
|
#18+
Твой оператор static_cast<Base<Derived<int> > > производит "срезку" объекта. Т.е. теперь ты имеешь объект по значению базового класса. Поэтому полиморфизм и не сработал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2007, 17:56 |
|
||
|
Правильно ли это?
|
|||
|---|---|---|---|
|
#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:00 |
|
||
|
Правильно ли это?
|
|||
|---|---|---|---|
|
#18+
AkhТвой оператор static_cast<Base<Derived<int> > > производит "срезку" объекта. Т.е. теперь ты имеешь объект по значению базового класса. Поэтому полиморфизм и не сработал. А если так static_cast<Base<Derived<int> > *>(?derived)->Self(); - то все должно быть ок я так понимаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2007, 18:08 |
|
||
|
Правильно ли это?
|
|||
|---|---|---|---|
|
#18+
батракstatic_cast<Base<Derived<int> > *>(?derived)->Self(); вместо ? - & очепятка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2007, 18:10 |
|
||
|
Правильно ли это?
|
|||
|---|---|---|---|
|
#18+
батрак AkhТвой оператор static_cast<Base<Derived<int> > > производит "срезку" объекта. Т.е. теперь ты имеешь объект по значению базового класса. Поэтому полиморфизм и не сработал. А если так static_cast<Base<Derived<int> > *>(?derived)->Self(); - то все должно быть ок я так понимаю? Да, думаю, так срезки не будет. Но дело в том, что тебе не должен быть нужным static_cast. Понижение по иерархии в С++ допускается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2007, 18:13 |
|
||
|
Правильно ли это?
|
|||
|---|---|---|---|
|
#18+
Спасиб ЗАЧОТ. Вижу в полиморфизме ты разобрался .. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2007, 18:16 |
|
||
|
Правильно ли это?
|
|||
|---|---|---|---|
|
#18+
батракСпасиб ЗАЧОТ. Вижу в полиморфизме ты разобрался .. Аж засмущался. Вижу ты теперь тоже. Если не секрет для чего такая конструкция? Не встречал для чего это можно было бы применить: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2007, 18:22 |
|
||
|
Правильно ли это?
|
|||
|---|---|---|---|
|
#18+
Akh батракСпасиб ЗАЧОТ. Вижу в полиморфизме ты разобрался .. Аж засмущался. Вижу ты теперь тоже. Если не секрет для чего такая конструкция? Не встречал для чего это можно было бы применить: Код: plaintext 1. Читаю Страуструпа Языкпрограммирования С++ стр 396 гл.13.6 Наследование и шаблоны. Преимущества такого наследования шаблонных классов я еще не осознал - вот и разбираюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2007, 18:31 |
|
||
|
Правильно ли это?
|
|||
|---|---|---|---|
|
#18+
батракПреимущества такого наследования шаблонных классов я еще не осознал - вот и разбираюсь.Осознать преимущество сложно... Намного проще осознать недостатки. Слишком большое количество вложенностей постоянно открыто в исходном тексте, слишком много букв надо писать чтобы объявить переменную и слишком сложно будет расширять всю эту гирлянду шаблонов если понадобиться. Шаблоны на мой взгляд вообще совершенно лишняя вещь в языке... еще и наследовать их? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2007, 00:05 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34687059&tid=2028463]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
179ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 496ms |

| 0 / 0 |
