1 | ||||||
Более практичный метод обнуления полей класса12.09.2013, 15:35. Показов 3168. Ответов 8
Метки нет (Все метки)
Всем привет.
Программируя на досуге столкнулся с таким вопросом - "обнуление полей класса". Ну первое что пришло в голову это создание отдельного метода например Clear который бы сбрасывал значение полей класса на default'ные значения. Но такой подход мне не понравился так как этот метод будет необходимо постоянно модернизировать дополняя туда новые добавленые поля. И немного поразмыслив решил сделать вот так:
0
|
12.09.2013, 15:35 | |
Ответы с готовыми решениями:
8
Много циклов. Не тяжко системе? Может есть более практичный вариант Как метод класса возвращает обьект, который является одним из полей данного класса? Получить коллекцию полей класса? (более глобальный вопр ос) Значение полей класса через метод и конструктор |
Ушел с форума
|
|
12.09.2013, 15:48 | 3 |
Минус в том, что не все может быть затерто нулем.
Например, попробуйте затереть какой-нибудь std::vector, если он член класса. Или если класс содержит виртуальную таблицу, она тоже может быть затерта. В итоге получите segmentation fault.
2
|
193 / 170 / 32
Регистрация: 09.09.2013
Сообщений: 522
|
||||||
12.09.2013, 15:52 | 4 | |||||
добрый день
используйте конструкторы по умолчанию для встроенных типов
1
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
||||||
12.09.2013, 15:59 | 5 | |||||
Минусов в таком подходе - ой-ей-ей! Как правильно написал коллега Убежденный, запросто можете получить segfault. (Кстати, с таким безобразием я сталкивался в коде реального проекта. Пришлось сильно бить ногами программиста, любившего такое "обнуление".)
1
|
193 / 170 / 32
Регистрация: 09.09.2013
Сообщений: 522
|
||||||
12.09.2013, 16:05 | 6 | |||||
а что мешает проверить? у меня нули
0
|
Ушел с форума
|
|
12.09.2013, 16:27 | 8 |
По стандарту языка (С++03, 5.3.4, п.15), это справедливо только
для формы со скобочками, "new T[] ()" (new-initializer). Если new-initializer отсутствует, объект создается неинициализированным.
0
|
193 / 170 / 32
Регистрация: 09.09.2013
Сообщений: 522
|
|
12.09.2013, 16:50 | 9 |
все понятно
я не знаю, вот сколько раз это делал у себя, так всегда результат получается правильным. а стандарт я плохо знаю. так что извините если где был не прав Добавлено через 38 секунд многого не знаю и могу ошибаться
0
|
12.09.2013, 16:50 | |
12.09.2013, 16:50 | |
Помогаю со студенческими работами здесь
9
Все строки матрицы, где находится более двух простых чисел, обнулить. Найти среднее арифметическое элементов до и после обнуления Как вызвать определенный метод переданного класса через метод другого класса? Как передать в метод класса Menu указатель на метод дочернего класса? Вывод в DataGridView полей некоторого экземпляра класса, в котором одно из полей является списком List Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |