|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
|
||||||
Наследование класс1 *test = new класс231.07.2013, 21:47. Показов 4719. Ответов 54
Метки нет (Все метки)
Кликните здесь для просмотра всего текста
Вот небольшая программка, подскажите в чем смысл записи в строчке 58, только не сухое определение записи, что мы создаем объект класса BaseClass и выделяем под него память типа DerivedClass (или как то так), а на пальцах, в чес смысл в чем плюсы и самое главное чем данная строка отличалась бы от записи BaseClass * test = new BaseClass ?
0
|
||||||
| 31.07.2013, 21:47 | |
|
Ответы с готовыми решениями:
54
Задача на класс2 Nginx перенаправляет на http://site.ru/test.ru или http://test.ru/test.ru C:\Projects\test\test.cpp|6|error: ISO C++ forbids declaration of 'operator++' with no type [-fpermissive]| |
|
Комп_Оратор)
|
||
| 31.07.2013, 22:53 | ||
0
|
||
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
|
|
| 31.07.2013, 23:16 [ТС] | |
|
IGPIGP, Croessmah, Jupiter, блин, все равно не понимаю смысла этого virtual и этой записи ( BaseClass * test = new DerivedClass ), вот без них, просто наследование, я создаю 2 класса Базовый класс (BaseClass) и от него идет Производный класс (DerivedClass), я создаю объект класса DerivedClass, назовем его test и у меня есть доступ ко всем переменным обоих классов и ко всем методам обоих классов, зачем мне это извращение в виде BaseClass * test = new DerivedClass, которое закрывает доступ к методам одного из классов. В чем смысл?
Где ошибка?
0
|
|
|
Комп_Оратор)
|
||
| 31.07.2013, 23:51 | ||
1
|
||
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
|
||||||
| 01.08.2013, 13:49 [ТС] | ||||||
|
Ой.. сколько было написано в этой теме.. а так толком это слово или словосочетание ни кто и не сказал, что ключевое слово virtual служит для перекрытия функции
2 класса Базовый класс (BaseClass) и от него идет Производный класс (DerivedClass), в обоих есть функция-элемент, ну допустим void print() я создаю BaseClass * test = new DerivedClass, объект test является объектом класса BaseClass и соответственно test->print() будет вызываться из класса BaseClass, что бы при всех тех же условиях вызвать функцию-элемент из класса DerivedClass, мне надо в классе BaseClass, перед функцией-элементом void print() поставить ключевое слово virtual и тогда будет выполнятся функция из класса DerivedClass при том, что объект test у нас является объектом класса BaseClass. Кликните здесь для просмотра всего текста
Вот для наглядности, в данном случае строчка 28 будет обращаться к функции-элементу из строки 19, за счет того, что в строке 9 у нас стоит ключевое слово virtual, если его убрать из 9-й строчки, то тогда будет вызываться функция-элемент из 9-й строчки. PS я раньше думал что надо во всех местах ставить слово virtual и все функции-элементы делать виртуальными, что то типа такого. PS2 скажите, если я обе функции print() (строчка 9 и строчка 19) сделаю virtual, тогда будет вызываться метод из строчки 19? Не подумайте что я просто обнаглел и мне тяжело поставить это слово и попробовать, просто если мне не изменяет память, вчера в одном из подобных примеров, с 2-мя virtual функция работала по другому, это мне память изменяет? PS3 я все правильно понял или опять что то не так? Спасибо за видео, оно помогло.
0
|
||||||
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
|
||
| 01.08.2013, 13:58 [ТС] | ||
|
0
|
||
|
Каратель
|
||||
| 01.08.2013, 14:00 | ||||
|
2
|
||||
|
|
||
| 01.08.2013, 14:01 | ||
|
0
|
||
|
|
||
| 01.08.2013, 14:04 | ||
|
Если оставите virtual только в производном - будет работать по-другому.
0
|
||
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
|
||
| 01.08.2013, 14:05 [ТС] | ||
|
0
|
||
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
|
|
| 01.08.2013, 14:10 [ТС] | |
|
то, что test будет объектом класса DerivedClass я понял, вопрос, т.е. когда не ясно какую функцию-элемент вызывать всегда вызывается функция-элемент базового класса?
И смысл тут заключается исключительно в неясности?
0
|
|
|
Каратель
|
||||||||
| 01.08.2013, 14:20 | ||||||||
|
у нас есть фигуры и нам пофигу что это за фигуры, мы хотим их нарисовать
2
|
||||||||
|
|
||
| 01.08.2013, 14:20 | ||
|
Если используется статического связывание (невиртуальные функции), то выбор функции будет произведен на основе типа указателя на этапе линковки. Если динамическое связывание (виртуальные функции) - то функция выберется в зависимости от конкретного типа объекта, адрес которого присвоен указателю, на этапе выполнения.
1
|
||
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
|
|||||||
| 01.08.2013, 14:48 [ТС] | |||||||
|
Кликните здесь для просмотра всего текста
Вот пример, тоже что приводилось на предыдущей странице ранее, толь без использование virtual (разве что деструктор, но он погоды тут не делает), мы создаем объект test, он является объектом класса DerivedClass (опустим тот момент, что это не объект, а указатель на объект), соответственно в обоих классах есть одна и та же функция-элемент - print() По логике, если объект test относится к классу DerivedClass, то и функция элемент print() должна вызываться из этого класса, но на деле происходит обратное.. Тогда мы меняем логику, если есть 2 класса, один является наследником другого, и в обоих присутствует одна и та же по наименованию функция-элемент, то при обращении к ней если не указано явно, к какой именно, программа \ компилятор, всегда будет обращаться к функции элементу базового класса, правильно? И второе, что бы указать явно программе \ компилятору к чему именно обращаться, существует ключевое слово virtual, если оно присутствует, то программа будет обращаться НЕ к базовому классу, а к производному классу (речь пока идет 2-х классах), правильно?
0
|
|||||||
|
Неэпический
|
|||||
| 01.08.2013, 14:54 | |||||
|
Добавлено через 58 секунд
2
|
|||||
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
|
|
| 01.08.2013, 15:08 [ТС] | |
|
ох.. я только что то нащупаю, как вы мне даете новую порцию непонятных мне слов и словосочетаний.. "позднего связывания", "статическое связывание" и т.д.
Ладно, пойду поем и продолжу изучение (ну как можно учится на голодный желудок..) Ни куда не уходите
0
|
|
|
Комп_Оратор)
|
|||||||
| 01.08.2013, 15:41 | |||||||
![]() Я вот подумал: чтобы понять зачем нужен полиморфизм, нужно же сначала понять зачем он не нужен? То есть простая идея многократного использования кода, без его модификации. Пример опять мутный:
1
|
|||||||
| 01.08.2013, 15:41 | |
|
Функция file_exists(test/01.ogg) работает, если папка test находится в корневом каталоге моего сервера. Что такое unit test и regression test
У себя на локале я пишу ссылку test.php?city=1 и в test.php он видет $city==1 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
|
|
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы
## О чём эта статья
В процессе построения ОДУ-модели (система дифференциальных. . .
|
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет)
Содержание проекта
Симуляция вековой (50 лет) экологической сукцессии в почве леса
Основные участники: АМ-гриб, ЭКМ-гриб,. . .
|
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов
Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
|
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация
В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
|