реклама на сайте
подробности

 
 
> Улучшает ли читабельность и позволяет ли избежать ошибок перегрузка операторов
DASM
сообщение Jul 30 2014, 15:27
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Читаю тут программы, которые были созданы до меня, и их необходимо развивать. . Вообщем все красиво и учится стоит. Но вот перегрузка постфиксного ++ меня несколько смутила. Она не просто сдвигает указатель на сдедущую позицию, но попутно может сделать пару забавных вещей, как то стереть сектор во флеше итп, а вид такой наивный как pchar++., чего то даже не знаю, правильно ли это.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
andrewlekar
сообщение Jul 31 2014, 03:57
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



Я предпочитаю избегать перегрузки операторов. Это вкусовщина, но можно прикинуть, как по такому коду делать поиск: дебаг превратится в тяжкий кошмар.
Go to the top of the page
 
+Quote Post
menzoda
сообщение Jul 31 2014, 04:58
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 13-09-12
Пользователь №: 73 530



Перегружать без опаски можно только в очевидных случаях, например, использовать "+=" для добавление объекта в коллекцию, тогда это не вызовет замешательства. Если то что ты сказал действительно так - "++" стирает память, то за такое хорошо бы дать по рукам, потому что ни один человек в здравом уме не догадается, что безобидный постинкремент может что то сотворить с флеш-памятью.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 31 2014, 07:33
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Как и любой инструмент - если применять с умом, то приносит пользу. А сдуру можно и х.. сломать.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
neiver
сообщение Jul 31 2014, 13:20
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 22-03-10
Из: Саратов
Пользователь №: 56 123



Ну например, для всяких алгебраических типов данных перегрузка операторов однозначно полезна. Вместо какого-нибудь:
Код
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? Или только первому элементу?
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 13:17
Рейтинг@Mail.ru


Страница сгенерированна за 0.0137 секунд с 7
ELECTRONIX ©2004-2016