Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Улучшает ли читабельность и позволяет ли избежать ошибок перегрузка операторов
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
DASM
Читаю тут программы, которые были созданы до меня, и их необходимо развивать. . Вообщем все красиво и учится стоит. Но вот перегрузка постфиксного ++ меня несколько смутила. Она не просто сдвигает указатель на сдедущую позицию, но попутно может сделать пару забавных вещей, как то стереть сектор во флеше итп, а вид такой наивный как pchar++., чего то даже не знаю, правильно ли это.
andrewlekar
Я предпочитаю избегать перегрузки операторов. Это вкусовщина, но можно прикинуть, как по такому коду делать поиск: дебаг превратится в тяжкий кошмар.
menzoda
Перегружать без опаски можно только в очевидных случаях, например, использовать "+=" для добавление объекта в коллекцию, тогда это не вызовет замешательства. Если то что ты сказал действительно так - "++" стирает память, то за такое хорошо бы дать по рукам, потому что ни один человек в здравом уме не догадается, что безобидный постинкремент может что то сотворить с флеш-памятью.
Сергей Борщ
Как и любой инструмент - если применять с умом, то приносит пользу. А сдуру можно и х.. сломать.
neiver
Ну например, для всяких алгебраических типов данных перегрузка операторов однозначно полезна. Вместо какого-нибудь:
Код
c = sqrt(complex_add(complex_mul(a, a), complex_mul(b, b)));

можно записать:
Код
c = sqrt(a * a + b * b);

Существенно улучшает читаемость кода и уменьшает вероятность ошибок. Перегружать операторы конечно надо так, чтоб их семантика была очевидна.
Плохой пример:
Код
MyArray<int> array;
...
array = 10;

Если оператор присваивания перегружен. Что он может делать с массивом? Делает размер массива равным 10? Или присваивает всем элементам массива значение 10? Или только первому элементу?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.