|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
28.09.2008, 17:03 | #41 | |
Пользователь
Регистрация: 25.09.2008
Сообщений: 40
|
Цитата:
Вот ты говоришь что я нелогично рассуждаю, ок, может быть ты покажешь как надо понимать этот кусок кода? Код:
|
|
28.09.2008, 17:15 | #42 | |
Новичок
Джуниор
Регистрация: 26.08.2008
Сообщений: 1,010
|
Цитата:
Код:
выделяешь память под экземпляр класса Cat и направляешь на него указатель myPet. (не забываем что Cat является "частью" класса Pet) Код:
компилятор посмотрит сначала присутствует ли такой метод в классе Pet, и если он присутствует, смотрит на его тип, если он виртуальный, посмотрит на что указывает указатель, если он указывает на порождённый класс, то он проверяет, обьявлен ли одноименный метод в нем, если обьявлен, то вызывает метод порожденного класса.
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими. |
|
28.09.2008, 17:20 | #43 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Вот зачем вдаваться в подробности как и что делает компилятор? Темболее откуда уверенность что компилятор делает именно так?
Между строк посмотрел статейку, в принципе вроде неплохо там всё описано, хотя псевдо код нужно писать не в синтаксисе языка, а то путаница одна получается. И могут возникнуть вопросы: зачем использовать классы, если компилятор приводит к структуре, в чём разница между структурой и классом и т.д. А учитывая, что в С++ структуры могут содержать методы... |
28.09.2008, 17:26 | #44 |
Новичок
Джуниор
Регистрация: 26.08.2008
Сообщений: 1,010
|
так описано было в книге, да впрочем это и логично.
о_0 ниразу не встречал. и mingw у меня матерился когда пытался такое написать.
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими. |
28.09.2008, 17:36 | #45 | |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Цитата:
Код:
|
|
28.09.2008, 17:42 | #46 |
Пользователь
Регистрация: 25.09.2008
Сообщений: 40
|
То есть получается создаются две области памяти, для класса Pet и для классов Cat+Pet?
|
28.09.2008, 17:43 | #47 | |
Новичок
Джуниор
Регистрация: 26.08.2008
Сообщений: 1,010
|
Цитата:
как ни странно, прокатило... наверно я когда в первые разы пытался - как-то скосячил. признаю, был не прав. p/s/ тему считаю исчерпаной.
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими. |
|
28.09.2008, 17:55 | #48 | ||||
Great Code Monkey
Форумчанин
Регистрация: 09.08.2007
Сообщений: 533
|
В статье вводится понятие структуры просто как непрерывной области памяти, в которой хранятся определенные данные.
Цитата:
Цитата:
Цитата:
Код:
1) динамически выделяется память для объекта класса Cat 2) по очереди вызываются конструкторы классов Pet и Cat, в результате чего объект *myPet будет хранить где-то (чаще всего в начале) адрес таблицы виртуальных функций класса Cat 3) при компиляции компилятор в место вызова функции вставляет специальный код, который в ходе выполнения программы находит в таблице виртуальных функций адрес вызываемой функции и передает туда управление. Цитата:
|
||||
28.09.2008, 18:01 | #49 |
Новичок
Джуниор
Регистрация: 26.08.2008
Сообщений: 1,010
|
это я так понимаю. если интересно, взгляни на листинг "калькулятора".
там чистые виртуальные функции. если их не обьявить во всех порожденных классах. то компилятор ругаться будет.
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими. |
28.09.2008, 18:05 | #50 | |
Пользователь
Регистрация: 25.09.2008
Сообщений: 40
|
Цитата:
2)У класса Cat нет виртуальных функций, они есть в Pet. 3)А вот тут по подробнее плиз, как это? |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
П Р О С Т Е Й Ш И Й пример 3D | aesoem | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 3 | 16.07.2008 16:54 |
Пример из учебника | valerij | Microsoft Office Excel | 11 | 20.06.2008 15:43 |
Пример патчинга | Д'якон | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 3 | 17.02.2008 19:27 |
пример парсинга | Stanislav | Общие вопросы Delphi | 4 | 14.01.2008 03:48 |