ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
25 апреля
729384 Топик полностью
Скрипач, пророк (19.01.2017 00:03 - 00:35, просмотров: 228) ответил Ксения на А меня есть контраргументы :). Перегрузки операторов обычно боятся, опасаясь, что текст чужой программы введет их в заблуждение, незаметно подменив традиционную функцию оператора нетрадиционной. Однако в действительности эта опасность отсутствует
Как раз для "почти числовых" (мартицы, комплексные числа) я бы, скрипя сердцем, возможно и согласился. Потому что ИНТУИТИВНО ПОНЯТНО. А вот использование спец.значков, вместо нормальных вызовов функций с именем, для не-вычислительных - зло. Программа должна быть читабельна. Ради этого целесообразно жертвовать многим. И если: а = b->read(); if( a!= NULL ) a->reinit(); В первом приближении, поддаётся пониманию с первого взгляда. То: a << b(); if( a != NULL) !a; Просто бессмысленное пижонство. Прочитать такое сходу, на уровне "а просто посмотреть что где как" совершенно невозможно. Нужно сначала понять о каком классе идет речь, выкурить его декларацию (а возможно и реализацию!) и только потом... может быть... Постулат Скрипача: Обосновывать нужно усложнение программы, а не отказ от него. Использование перегрузки операций это, по сравнению с обычными именами функций - усложнение. Полезность для улучшения читабельности? Строго наоборот. Улучшение контроля семантики на этапе компиляции? Нет. Улучшение контроля семантики на этапе выполнения? Нет. Существенное увеличение качества результирующего кода? Нет. Так зачем, блин?
... но не любой ценой.