Некоторые ситуации, в которых стоит избегать использования перегрузки функций:
- Снижение читаемости кода. 1 Увлечение перегрузкой может сделать код безликим, во многих случаях лучше дать название, отражающее специфику операции. 1
- Использование перегруженных функций и шаблонов, требующих сложных и не до конца понятных алгоритмов разрешения перегрузки. 1
- Перегрузка виртуальных функций. 1 Разрешение перегрузки выполняется на этапе компиляции, что не всегда согласуется с динамической природой виртуальных функций и может привести к неожиданным последствиям. 1
- Использование перегрузки для необязательных параметров. 3 Достаточно использовать необязательные параметры в сигнатуре функции. 3
- Перегрузка функций с списками аргументов одного типа, основанных только на типе возврата. 5
Решение об использовании перегрузки функций стоит принимать продуманно и аккуратно, учитывая конкретные условия проекта.