![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
noskovgleb |
![]()
Сообщение
#21
|
Новичок ![]() Группа: Пользователи Сообщений: 30 Пол: Мужской Репутация: ![]() ![]() ![]() |
собственно в FAQ прочитал.
Возможность определения единого по имени действия (процедуры или функции), применимого одновременно ко всем объектам иерархии наследования, причем каждый объект может "заказывать" особенность реализации этого действия над "самим собой". |
volvo |
![]()
Сообщение
#22
|
Гость ![]() |
Хорошо. Прочитал. А понял?
Ты мой код смотрел, из 17-го сообщения, где есть полиморфная процедура Get, которая работает с любым объектом, унаследованным от единого предка? Вот тебе и "особенности реализации действия над самим собой"... |
noskovgleb |
![]()
Сообщение
#23
|
Новичок ![]() Группа: Пользователи Сообщений: 30 Пол: Мужской Репутация: ![]() ![]() ![]() |
Да... но что делает эта процедура.(?
|
volvo |
![]()
Сообщение
#24
|
Гость ![]() |
Цитата но что делает эта процедура.(? А она, собственно, ничего не делает. Она заставляет работать механизм виртуальных функций. В базовом объекте определена виртуальная функция Get, которая "чисто-виртуальная", пользуясь терминологией С++, то есть, не делает ничего вообще. Каждый наследник определяет свою версию этого метода. А потом полиморфная процедура Get заставляет отработать метод Get того объектного типа, который был передан в эту процедуру. |
noskovgleb |
![]()
Сообщение
#25
|
Новичок ![]() Группа: Пользователи Сообщений: 30 Пол: Мужской Репутация: ![]() ![]() ![]() |
Я извеняюсь Volvo что немогу воспользоваться тем что ты написал... хочеться попробывать свое... или хотябы увидеть то что смогу понять. Еще один вопрос это будет похоже на полиморфим, если да то что здесь не так?
Добавлено через 1 мин. и оно какую то ошибку выдает, exit code 210 |
volvo |
![]()
Сообщение
#26
|
Гость ![]() |
Цитата Еще один вопрос это будет похоже на полиморфим, если да то что здесь не так? В каком именно месте? Где здесь у тебя присутствуетЦитата Возможность определения единого по имени действия (процедуры или функции), применимого одновременно ко всем объектам иерархии наследования, причем каждый объект может "заказывать" особенность реализации этого действия над "самим собой". ? Ну, объявил ты виртуальные функции sves в двух типах. И что? Ты посмотри, как ты их вызываешь! У тебя тут виртуальность. и не пахнет. С таким же успехом методы могли быть и НЕвиртуальными. Ты для объекта типа TVes ЯВНО вызываешь TVes.sves, а для объекта типа TVes2 опять же ЯВНО вызывается TVes2.sves.Еще раз посмотри на мою реализацию процедуры Get. В чем заключается её полиморфность? А в том, что она не знает, объект какого типа будет ей передан, и все равно, когда получает объект, вызывает нужный метод. А ты вызываешь все в явном виде. Это не полиморфизм. Цитата и оно какую то ошибку выдает, exit code 210 А ты в FAQ-е точно всё читал? Про то, что при наличии в классе виртуальных методов, ты ОБЯЗАН вызвать конструктор перед обращением к такому методу - тоже читал (там написано совершенно точно, что произойдет при попытке вызвать виртуальный метод ДО вызова конструктора)? Где вызов конструктора в твоем коде? |
![]() ![]() |
![]() |
Текстовая версия | 9.09.2025 13:31 |