Classes and class hierarchies
C.162
Перегружайте операции, которые примерно эквивалентны
Причина
Использование разных имён для логически эквивалентных операций с разными типами аргументов сбивает с толку, приводит к кодированию информации о типах в именах функций и препятствует обобщённому программированию.
Пример
Рассмотрим:
void print(int a);
void print(int a, int base);
void print(const string&);
Все три функции выводят свои аргументы (соответствующим образом). Напротив:
void print_int(int a);
void print_based(int a, int base);
void print_string(const string&);
Все три функции также выводят свои аргументы (соответствующим образом). Добавление к именам лишь вносит многословие и препятствует обобщённому коду.
Контроль
???