|
1 / 1 / 0
Регистрация: 12.10.2015
Сообщений: 23
|
||||||
Реализация базового класса для геометрических фигур - C++15.11.2015, 15:46. Показов 5377. Ответов 13
Метки нет (Все метки)
нужно реализовать базовый класс для геометрических фигур — Shape и два его наследника — Circle и Rectangle. У базового класса Shape нужно определить общий метод contains(double x, double y), который проверяет, лежит ли точка (x, y) внутри фигуры. В наследниках Shape нужно реализовать этот метод. В комментариях к коду указано, какие параметры должны принимать конструкторы классов-наследников, все аргументы имеют тип double.
Требования к реализации: При реализации не нужно вводить или выводить что-либо. Реализовывать main не нужно.
0
|
||||||
| 15.11.2015, 15:46 | |
|
Ответы с готовыми решениями:
13
Написать программу для рисования геометрических фигур Многофайловая система классов для описания плоских геометрических фигур |
|
183 / 181 / 66
Регистрация: 15.02.2015
Сообщений: 515
|
||||||
| 15.11.2015, 16:36 | ||||||
|
Наверное как-то так:
0
|
||||||
|
1 / 1 / 0
Регистрация: 12.10.2015
Сообщений: 23
|
|
| 15.11.2015, 16:50 [ТС] | |
|
спасибо, почти так же решил, но нужен еще деструктор для shape
0
|
|
|
183 / 181 / 66
Регистрация: 15.02.2015
Сообщений: 515
|
|
| 15.11.2015, 16:55 | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 12.10.2015
Сообщений: 23
|
|
| 15.11.2015, 16:58 [ТС] | |
|
удалять объекты Shape,разве нет?
0
|
|
|
183 / 181 / 66
Регистрация: 15.02.2015
Сообщений: 515
|
|
| 15.11.2015, 17:08 | |
|
нет, не так, объект Shape будет удаляться либо непосредственным вызовом delete (в том числе "умным указателем"), либо, если он был создан на стеке, будет уничтожен при выходе из зоны видимости (или при исключении). В обоих случаях будет вызван деструктор (если не создавать самому, то создастся дефолтный), в котором нужно освободить ресурсы, которые объект использовал, в вашем случае таких ресурсов нет.
Если вы планируете дальше наследовать классы, которые будут использовать ресурсы, и имеет место быть полиморфизму, то базовому классу необходим виртуальный деструктор, но это опять не тот случай.
0
|
|
|
1 / 1 / 0
Регистрация: 12.10.2015
Сообщений: 23
|
|
| 15.11.2015, 17:26 [ТС] | |
|
спасибо
0
|
|
|
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 13
|
|
| 15.11.2015, 20:53 | |
|
Я тоже решаю эту задачу. Почему-то при таком решении как у Вас, выдаётся утечка памяти. Понять не могу где она тут может утекать?
0
|
|
|
183 / 181 / 66
Регистрация: 15.02.2015
Сообщений: 515
|
|
| 15.11.2015, 20:59 | |
|
Lenchik854, тут (в описании классов) её быть не может, покажите, как вы их используете.
0
|
|
|
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 13
|
|
| 15.11.2015, 21:28 | |
|
Я не использую их ))). Это задание со Stepic, отправляю им класс, а валидатор пишет: memory leaks. Вот я и не понимаю, где это может быть. Стала искать в интернете что-то подобное, наткнулась на Ваше решение. По факту, такое же. Даже попробовала прямо его отправить, всё равно утечка. Вот я и не пойму, где она может быть?
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||||
| 15.11.2015, 21:32 | ||||||||||
|
наследование публичное, а значит допускает работу через полиморфный интерфейс. а значит уже необходим вирт. диструктор. http://rextester.com/YUSBR45596
1
|
||||||||||
|
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 13
|
|
| 15.11.2015, 21:42 | |
|
hoggy, спасибо большое за объяснение ))))
0
|
|
|
183 / 181 / 66
Регистрация: 15.02.2015
Сообщений: 515
|
|
| 16.11.2015, 06:58 | |
|
hoggy, виртуальный деструктор у базового класса при полиморфизме нужен, но не всегда необходим (если ни один наследник не реализует свой деструктор и наследники не инкапсулируют объекты других классов с деструктором). Поэтому, в рамках задания при использовании этих классов не будет утечки. В
new выделится блок памяти размером sizeof(Rectangle), при вызове delete этот же блок памяти и освободится (в него входят данные классов Shape и Rectangle, плюс указатель на таблицу виртуальных методов).
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 16.11.2015, 21:07 | |||
|
вы знаете, что такое UB ? это значит, поведение не определено. может произойти все что угодно. кстати, об этом прямым английским текстом предупреждает компилятор: выше я специально для вас привел выдержку кода, который иллюстрирует, как при множественном наследовании, процесс получает от системы живительную эвтаназию, за попытку освободить часть памяти объекта. из чего вы должны были сделать вывод: виртуальный диструктор нужен всегда, если предполагается освобождать память наследников, при работе с интерфейсами.
0
|
|||
| 16.11.2015, 21:07 | |
|
Помогаю со студенческими работами здесь
14
Построить систему классов для описания плоских геометрических фигур Построить систему классов для описания плоских геометрических фигур Построить систему классов для описания плоских геометрических фигур
Реализация физических законов для разных геометрических фигур Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|