|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.03.2011, 23:19 | #1 |
Пользователь
Регистрация: 15.12.2010
Сообщений: 78
|
полиморфизм и констркуторы
я тут долго писал и наверное немного непонятно но вот:
короче сегодня долго курил всю эту тему насчет виртуальных функций. решил проверить свое понимание. сделал программку. там смысл такой короче: есть класс монстер в котором есть два конструктора - по умолчанию и с аргментами. ну и две вирт. функции для проверочки. есть два подкласса гоблин и паук. у них тоже есть по два конструктора и две фукнции. в main() я создаю два указателя на обьект класса монстр и направляю кждый указатель на своего монстра. то есть я так понял что в тот момент когда я выделяю память в куче они как раз иницализируются. И если я при выделении памяти из кучи напишу аргументики то переменная strength из подкласса получит нужное значение. но вот как мне вызвать конструктор с аргументами для класс монстр. В тот момент когда я инициализирую гоблина к примеру у меня сначала вызывается конутркор по умолчанию для монстра и потом конструктор с аргументами для гоблина. и непонятно как мне вызвать место кон-ра по умолчанию кон-р с арг-ми. там я еще реализовал нужную мне фигню по другому: я создал там обьект и скопировал его в обьект "гоблин". Но это далеко не всегда прокатит ведь если бы у меня переменная strength хранилась в базовом классе и передавалсь бы подклассу то она бы заменялась на какую нибудь случайную фигню(я проверял). вот сама программа Код:
Последний раз редактировалось ACE Valery; 06.03.2011 в 02:59. |
06.03.2011, 00:35 | #2 |
Форумчанин
Регистрация: 29.09.2010
Сообщений: 636
|
чтобы вызывать конструктор базового класса с аргументами, передайте ему эти аргументы.. пример (не для вашей программы)
Goblin (int weight, int height, int strenght, char* w_type):Monster(weight,height,stren ght) { strcpy(weapon_type,w_type); } оформите код тегами "код" , невозможно читать Последний раз редактировалось onewho; 06.03.2011 в 00:52. |
06.03.2011, 04:32 | #3 |
Линуксоид
Участник клуба
Регистрация: 31.07.2009
Сообщений: 1,403
|
Всё верно выше написали, используй список инициализации для выбора нужного конструктора.
Не по теме теперь. Почитай вторую половину поста http://programmersforum.ru/showpost....83&postcount=2 (со слов «Всё. Но осталось рассказать о важной вещи. Неотъемлемой частью документации к API и к коду является следование хорошим правилам именования.»). А также не делай публичные поля!
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su |
06.03.2011, 15:41 | #4 |
Пользователь
Регистрация: 15.12.2010
Сообщений: 78
|
?
а что такое поля?
и еще вопрос: как сделать чтобы подкласс наследовал полностью весь базовый класс, включая защищенные члены? |
06.03.2011, 15:47 | #5 |
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
Obey-Kun имел ввиду это
Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
полиморфизм | slayerblya | Общие вопросы C/C++ | 1 | 27.02.2011 01:43 |
Полиморфизм в пхп | Golovastik | PHP | 1 | 02.07.2010 20:40 |
Полиморфизм | mister2010 | Общие вопросы C/C++ | 30 | 24.05.2010 01:07 |
Полиморфизм. Пример. | Scratch | Общие вопросы C/C++ | 53 | 28.09.2008 18:46 |