"Честность" и перегруженные функции
От: Непомнящий Евгений  
Дата: 19.06.08 08:59
Оценка: 2 (1) +2
Здравствуйте.

Читал недавно Бертрана Мейера, наткнулся у него на примерно следующее:
А а
B b
f(a)
f(b)

Такой код плох, потому что нарушает принцип "честности". Читателю сложно понять какая именно f вызывается.

С другой стороны, такой код хорош
[c]
А а
B b
a.m()
b.m()
[c]

До меня не доходит — в чем тут принципиальная разница? Фактически, методы с одинаковыми именами в разных классах (имхо) эквивалентны функциям, перегруженным по одному аргументу. И читатель программы сталкивается с теми же проблемами, что и в случае простых перегруженных функций. А если учесть, что методы могут быть виртуальными, определить, что именно вызывается на самом деле — еще большая проблема.

Или я не прав?
... << RSDN@Home 1.2.0 alpha 3 rev. 880>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.