|
|
|
ООП. Какая функция отработает ?
|
|||
|---|---|---|---|
|
#18+
Класс B перекрывает функцию F() класса A Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. Теперь где-то в программе Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Собственно ступор у меня вызывает момент, когда класс A() оформлен в одну библиотеку SO/DLL, а класс B() оформлен в другую библиотеку SO/DLL. MyClass это уже юзерская прога. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2007, 10:07:16 |
|
||
|
ООП. Какая функция отработает ?
|
|||
|---|---|---|---|
|
#18+
A::F(). Сделай ее вируальной, будет обрабатываться B::F() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2007, 10:11:39 |
|
||
|
ООП. Какая функция отработает ?
|
|||
|---|---|---|---|
|
#18+
А, что, если не virtual так не будет ? Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2007, 10:14:25 |
|
||
|
ООП. Какая функция отработает ?
|
|||
|---|---|---|---|
|
#18+
ZmeisheА, что, если не virtual так не будет ? Код: plaintext 1. 2. 3. 4. 5. Будет если вызывать от указателя на B. В этом месте происходит статический вызов функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2007, 10:16:55 |
|
||
|
ООП. Какая функция отработает ?
|
|||
|---|---|---|---|
|
#18+
Полиморфизм, ферштейн? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2007, 10:17:32 |
|
||
|
ООП. Какая функция отработает ?
|
|||
|---|---|---|---|
|
#18+
хорошо. В А() делаю её virtual Если в В() напишу так. void В::F() { ++var_B; } А::F() отработает до B::F() ??? Мне порядок важен. Особенно после приведения типа (В) к типу (А). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2007, 10:25:14 |
|
||
|
ООП. Какая функция отработает ?
|
|||
|---|---|---|---|
|
#18+
Zmeisheхорошо. В А() делаю её virtual Если в В() напишу так. void В::F() { ++var_B; } А::F() отработает до B::F() ??? Мне порядок важен. Особенно после приведения типа (В) к типу (А). Отработает только B::F() и точка! Потому что это результат полиморфизма. Эта функция найдется по виртуальной таблице объекта B, т.к. именно он будет передан в параметре. Но в функции B::F() у тебя был вызов A::F() - где ты его поставишь это твое дело. Поставил в начале, значит в начале и вызоветься. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2007, 10:33:16 |
|
||
|
ООП. Какая функция отработает ?
|
|||
|---|---|---|---|
|
#18+
Akh Это всё понятно. НЕ понятно, что будет после приведения типов ? Да ещё когда классы в разных библиотеках. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2007, 10:37:38 |
|
||
|
ООП. Какая функция отработает ?
|
|||
|---|---|---|---|
|
#18+
Всё, разобрался. Действительно virtual. Подробности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2007, 11:11:43 |
|
||
|
ООП. Какая функция отработает ?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2007, 11:13:37 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=266&tid=2027739]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
31ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 189ms |
| total: | 276ms |

| 0 / 0 |
