272 / 266 / 146
Регистрация: 02.08.2012
Сообщений: 609
|
||||||
1 | ||||||
Нужен взгляд со стороны04.02.2014, 23:15. Показов 529. Ответов 8
Метки нет (Все метки)
Есть ли какие-нибудь недочёты? Может что-то не к месту?
0
|
04.02.2014, 23:15 | |
Ответы с готовыми решениями:
8
Бугсую. Нужен свежий взгляд Прямоугольная матрица. Нужен взгляд специалиста! нужен взгляд со стороны Нужен взгляд со стороны и критика! |
59 / 58 / 16
Регистрация: 09.12.2013
Сообщений: 208
|
|
04.02.2014, 23:48 | 2 |
1. раз уж ты в деструкторе очищаешь память, то тогда создавай массив (выделяй память под него) в конструкторе.
2. лучше убрать возможность изменения H и W в классе, пускай только через конструктор передаются. Либо тебе придется каждый раз переопределять память. 3. Не надо внутри класса запрашивать данные, принимай данные через аргументы методов класса, а не через консоль. О входных данных должна заботиться программа, а не класс, иначе этот класс не универсален будет. 4. По моему, getM должна быть названа printM, т.к. getM должен возвращать нам указатель на массив **M
1
|
272 / 266 / 146
Регистрация: 02.08.2012
Сообщений: 609
|
|
05.02.2014, 00:39 [ТС] | 3 |
Вот этого хотелось избежать. Получается если я создам массив, как в моём случае, через функцию
и создам ещё функцию, в которой буду очищать память, мне останется вызвать эту функцию в функции getM() после печати или же в основной программе после вызова функции печати (getM())?
0
|
59 / 58 / 16
Регистрация: 09.12.2013
Сообщений: 208
|
|
05.02.2014, 00:53 | 4 |
Зачем?
Что может быть идеальнее, чем выделять память под массив в конструкторе, и очищать память в деструкторе? Расскажи, для чего тебе этот класс?
0
|
272 / 266 / 146
Регистрация: 02.08.2012
Сообщений: 609
|
||||||
05.02.2014, 01:30 [ТС] | 5 | |||||
646kapeh064, да так, играюсь от нечего делать.
Сам себя запутал, хотел и фиксированные размеры для матрицы и вводимые. Думал о перегрузке конструкторов. Впрочем потом сообразил. Спасибо за помощь.
0
|
59 / 58 / 16
Регистрация: 09.12.2013
Сообщений: 208
|
|
05.02.2014, 01:49 | 6 |
Можно. Но только это надо делать более красиво.
Например, напиши 2 приватные функции: 1. создает массив размера W H 2. уничтожает массив Затем вызывай создание массива в конструкторе а в деструкторе уничтожение массива. И добавь функцию setSize(int H, int W) например, в которой уничтожай массив и создавай новый с этими значениями. Нет ничего невозможного, надо лишь представить задачу и подумать как с меньшим кодом её реализовать.
1
|
244 / 245 / 38
Регистрация: 08.04.2013
Сообщений: 927
|
|
05.02.2014, 02:16 | 7 |
GuGo1991, если уж есть вариант, где указатель не инициализирован, то есть, память выделена не была (Ваш конструктор по умолчанию), то стоит указателю присваивать NULL, а то не хорошо, когда мы освобождаем память, которой нет.
1
|
272 / 266 / 146
Регистрация: 02.08.2012
Сообщений: 609
|
|
05.02.2014, 16:29 [ТС] | 8 |
metaluga145, вы о моём первом варианте. Не обратил должного внимания.
Учту на будущее. Спасибо.
0
|
05.02.2014, 16:50 | 9 | |||||
Добавьте конструктор копирования:
1
|
05.02.2014, 16:50 | |
05.02.2014, 16:50 | |
Помогаю со студенческими работами здесь
9
Сборка машины, нужен взгляд со стороны! ошибка (html) нужен взгляд со стороны Нужен взгляд со стороны на готовую работу Интересует взгляд на сайт со стороны Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Администрирование Git, продвинутые техники работы с Git
InfoMaster 11.01.2025
Основы управления репозиторием
Эффективное управление Git-репозиторием требует глубокого понимания механизмов контроля доступа и инструментов администрирования. Рассмотрим ключевые аспекты. . .
|
Что такое HCL Notes и как с ним работать
InfoMaster 10.01.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) представляет собой комплексную платформу для совместной работы и обмена информацией в корпоративной среде. Это многофункциональное решение,. . .
|
Как работать с Git из Windows и Visual Studio
InfoMaster 10.01.2025
Работа с Git в Windows
Работа с Git в операционной системе Windows может быть осуществлена с помощью различных инструментов, каждый из которых обладает своими уникальными возможностями и. . .
|
Аналог оператора switch case в Python
InfoMaster 10.01.2025
Оператор switch case используется в программировании для выбора одного из нескольких вариантов исполнения кода. Однако в языке Python этот оператор отсутствует. Понимание аналогов switch case в. . .
|
Отличия абстрактного класса от интерфейса
InfoMaster 10.01.2025
В современной разработке программного обеспечения существуют два основных механизма реализации абстракции: абстрактные классы и интерфейсы. Эти инструменты, хотя и схожи в своей основной цели -. . .
|
Как работать в Git
InfoMaster 10.01.2025
Git — это одна из наиболее популярных систем контроля версий, которая активно используется разработчиками по всему миру. Она позволяет эффективно управлять изменениями в коде, координировать работу. . .
|
Реализация передвижения персонажа в Unity3d на C#
InfoMaster 10.01.2025
Реализация передвижения персонажа в Unity3D начинается с правильной настройки проекта. Этот этап критически важен для создания отзывчивого и плавного управления. Рассмотрим основные шаги для создания. . .
|
Docker: руководство для начинающих
InfoMaster 10.01.2025
В современном мире разработки программного обеспечения контейнеризация стала неотъемлемой частью процесса создания и развертывания приложений. Docker, как ведущая платформа контейнеризации, произвела. . .
|
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства
Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
|
Что такое NullReferenceException и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
|
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
|
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
|