Перейти к содержанию
    

Улучшает ли читабельность и позволяет ли избежать ошибок перегрузка операторов

Читаю тут программы, которые были созданы до меня, и их необходимо развивать. . Вообщем все красиво и учится стоит. Но вот перегрузка постфиксного ++ меня несколько смутила. Она не просто сдвигает указатель на сдедущую позицию, но попутно может сделать пару забавных вещей, как то стереть сектор во флеше итп, а вид такой наивный как pchar++., чего то даже не знаю, правильно ли это.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я предпочитаю избегать перегрузки операторов. Это вкусовщина, но можно прикинуть, как по такому коду делать поиск: дебаг превратится в тяжкий кошмар.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Перегружать без опаски можно только в очевидных случаях, например, использовать "+=" для добавление объекта в коллекцию, тогда это не вызовет замешательства. Если то что ты сказал действительно так - "++" стирает память, то за такое хорошо бы дать по рукам, потому что ни один человек в здравом уме не догадается, что безобидный постинкремент может что то сотворить с флеш-памятью.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну например, для всяких алгебраических типов данных перегрузка операторов однозначно полезна. Вместо какого-нибудь:

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? Или только первому элементу?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...