Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 21.05.2016
Сообщений: 18

Полиморфизм, наследование

24.05.2017, 16:47. Показов 1164. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Товарищи, кто может, объясните пожалуйста.

Просят добавить новый тип объектов Trap. Методы в нем объявлены как виртуальные, но в примере я не вижу чтобы Trap наследовался от какого либо заранее созданного класса. А если он не наследуется, то смысл тогда с виртуальных функций?

вот тот фрагмент кода, который дан в качестве примера:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Trap
    
{
public:
 
    double x,y,F,r;
 
    Trap(double x, double y, double F, double r);
    virtual ~Trap(void);
    virtual void Draw(HDC dc);
 
    virtual void MoveBall (CBall*b);
 
};
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.05.2017, 16:47
Ответы с готовыми решениями:

Наследование, полиморфизм
Не могу реализовать полиморфизм для метода getShow() ну и в теории сетШов(). Но сейчас о гете говорим. Я создал дополнительный класс...

Наследование и полиморфизм
Добрый день ребятюни!! Срочно требуется ваша помощь! Программа которая служит для вывода выдающихся учеников и преподов. Если у...

Наследование и полиморфизм.
Вопрос следующий. Как мне вытащить функцию из родителя класса родителя, при условии что родителей тек. класса у меня 2! )) Запутанно? Ниже...

3
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
24.05.2017, 17:21
Jim_Hunter, смысл в том, что виртуальные функции важны не для самого класса где они объявлены, а для наследников этого класса. Для самого класса они работают точно так же как обычные, а вот для его наследников... Кстати у наследников функции с таким же названием и аргументами станут виртуальными вне зависимости от того, добавишь ли к ним это ключевое слово или нет...
1
0 / 0 / 0
Регистрация: 21.05.2016
Сообщений: 18
24.05.2017, 18:16  [ТС]
Дело в том что у этого класса нет наследников, и не будет в дальнейшем. Функции Draw и Move уже созданы в другом классе.
Но как видно из фрагмента кода Trap не является наследником другого класса. И есть 2 варианта: первый ваш, что это якобы для будущих наследников класса Trap, и второй: то что trap является наследником класса в котором определены функции Draw и Move(так как это лишь фрагмент кода показали обозначив их как виртуальные, вместо того чтобы написать базовый класс, либо тупо забыли это сделать ). Просто от этого зависит что мне дальше делать. Или мутить отрисовку объектов уже через созданный Draw, или забить на наследование и просто заново в Trap описать все эти методы по-своему.
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
24.05.2017, 19:14
Цитата Сообщение от Jim_Hunter Посмотреть сообщение
вместо того чтобы написать базовый класс, либо тупо забыли это сделать
Как бы он и будет базовым классом... Пусть и с определёнными, а не чисто виртуальными функциями, но это не важно. Если наследников создавать для этого класса в обозримом будущем не собираешься то да, "virtual" можно поубирать, от этого чуть производительность повысится.

Добавлено через 4 минуты
Если же наследники будут, то для
C++
1
class Trap1 : public Trap
можешь вызывать у наследников его реализации вот так:

C++
1
2
3
4
5
6
void Trap1::Draw(HDC dc)
{
   // код
   Trap::Draw(dc);  // вызов отрисовки базового класса
   // код
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.05.2017, 19:14
Помогаю со студенческими работами здесь

Наследование и полиморфизм...
Есть спецы в этой теме?) Сейчас пишу курсовую, в методичке (препод сильно снижает за отклонения от инструкций) сказано создать базовый...

Полиморфизм, наследование
Создать абстрактный базовый класс с виртуальной функцией*— площадь. Создать производные классы: прямоугольник, круг, прямоугольный...

Наследование и полиморфизм
Написать демонстрационную программу, в которой создаются объекты различных классов. Определение классов, их реализацию, демонстрационную...

ООП Полиморфизм Наследование
У меня есть базовый класс и 2 производных от него класса... Как сделать, чтобы в программе я мог сделать такое обьявление: Force fc;...

Виртуальное наследование и полиморфизм
Читая книгу столкнулся с такой типа такой, что полиморфизм это механизм в котором наследуются методы базового класса через указатель на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru