![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Felixx |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 4.12.2008 Репутация: нет Всего: нет |
Доброго время суток. У меня имеется проблемка небольшая, подскажите пожалуйста что не так сделано?..
Суть проблемы такова: Имеем абстрактный класс:
1й наследник:
2й Наследник:
В консоль выводитса: test2 test1 тоесть сначало из метода WriteImpl и только потом из конструктора.. С чем это может быть связано? Может что то не так написано? |
||||||
|
|||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: нет Всего: 250 |
конструктор предка выполняется раньше конструктора наследника..
|
|||
|
||||
| Felixx |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 4.12.2008 Репутация: нет Всего: нет |
А как тогда можно сделать? метод вить абстрактный.. Убрать метод из предка и выполнять его руками в наследнике получаетса? |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: нет Всего: 250 |
проблема не в методе, а в очередности выполнения констукторов.. если надо выполнить после конструктора наследника, то это можно выполнить только "извне" то, есть тот кто создает объект, должен вызвать и этот метод.. |
|||
|
||||
| math64 |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: нет Всего: 72 |
Я уже ответил в старом месте темы в форуме С++
Поясню, почему в конструкторе (C#) лучше не вызывать виртуальные методы:
В С++ поведение конструктора при вызове виртуальных методов безопаснее: если бы f() был бы не абстрактным, вызвался вы A::f(). Решение может быть например такое:
Добавлено @ 07:47 или такое:
Это сообщение отредактировал(а) math64 - 13.10.2011, 08:27 |
||||||
|
|||||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |