|
9 / 9 / 3
Регистрация: 09.12.2012
Сообщений: 219
|
||||||
Какие есть ошибки в коде?11.08.2015, 13:29. Показов 1285. Ответов 3
Метки нет (Все метки)
Добрый день. Сейчас было небольшое собеседование и одна из задачек была такая
0
|
||||||
| 11.08.2015, 13:29 | |
|
Ответы с готовыми решениями:
3
Какие есть ошибки в коде
Можете сказать есть в коде ошибки или какие-то советы? |
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 11.08.2015, 13:34 | |
|
Warezovvv,
1) Деструктор A должен быть виртуальным, B не обязательно. 2) Наследование должно быть открытое. 3) Нет перегрузки конструктор копирования/оператора присваивания. 4) Некорректный порядок инициализации. size должен инициализироваться до buf, но этого не произойдет по причине порядка указания полей в классе или должен использоваться параметр sz. Это так, самые грубые ошибки.
0
|
|
|
Ушел с форума
|
|
| 11.08.2015, 13:50 | |
|
Навскидку, из того, что бросается в глаза:
1. Порядок инициализации членов в классах A и B. 2. Конструкторы A и B полезно сделать explicit. 3. Для размера лучше использовать тип size_t, не int. 4. Деструктор A должен быть виртуальным. B - нет. 5. Деструкторы A и B должны использовать форму "delete []". 6. Нет конструктора копирования и оператора присваивания. 7. operator[] следует делать в двух версиях: а) константная, возвращающая элемент массива, б) неконстантная, возвращающая ссылку на него (см. пункт 9). 8. memset в конструкторе B некорректен. 9. foo: "a[5] = b[10]" не сработает. 10. foo: здесь не double delete, а просто UB. 11. В классе B отсутствует "operator =". 12. Отсутствует функция main. 13. Из-за того, что используется закрытое наследование B от A, код вообще не будет компилироваться. 14. Конструктор B не инициализирует базовый класс A.
1
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
| 11.08.2015, 13:59 | ||||||
Сообщение было отмечено Warezovvv как решение
Решение
По-хорошему, код должен выглядеть +- так (не переделывал на size_t, но по хорошему размер/индексация должны идти через size_t).
Ну и memset в B все равно кривой, но как минимум инициализирует весь массив.
2
|
||||||
| 11.08.2015, 13:59 | |
|
Помогаю со студенческими работами здесь
4
Какие ошибки в коде?
Какие ошибки содержатся в приведенном коде? Какие ошибки содержатся в представленном коде: Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|