Почему в С++ нет многообразных методов?
Я прочитал много статей о том, как реализовать multimethod в С++:
почему нет многоточия в С++?
почему они не поддерживаются стандартом С++?
Ответы
Ответ 1
Прямо от устья лошади:
"Я с сожалением отказался от мульти-методов, потому что мне понравилась эта идея, но я не мог найти приемлемую форму, чтобы ее принять".
Bjarne Stroustrup, The Design and Evolution of С++ (p297)
И позже:
"Мульти-методы - одно из интересных, что-то вроде С++. Могу ли я спроектировать и реализовать их достаточно хорошо в то время? [...] Какую еще работу можно было бы отменить, чтобы предоставить время для разработки и внедрить мульти-методы?"
(p298f)
В общем, всякий раз, когда вы чувствуете желание узнать, почему какая-либо конкретная функция С++ была реализована или не была реализована, или была реализована так, как она есть сейчас, и если эта функция предшествует стандартизации, вы хотите прочитать D & Е.
Ответ 2
Как заметил Бьярне несколько раз, когда люди критикуют С++, он обычно запускает что-то вроде: "С++ слишком большой, слишком сложный, имеет слишком много функций, и его слишком сложно изучить - вы должны действительно работать делая это меньше и проще. О, и пока вы работаете над этим, у меня также есть эта замечательная идея для функции убийцы, которую вы должны добавить!"
Ответ 3
Просто потому, что это можно сделать, это не значит, что это не так. Одна критика С++ связана с тем, что "Страуструп взял все, о чем слышал, и попытался включить его".
Плюс, как говорит Раймонд Чен: "Каждая функция начинается с -100 очков". То есть, прежде чем вы спросите, почему С++ не имеет таких вещей, вы должны подробно объяснить, почему они нужны. В противном случае ваша функция остается на отрицательной территории из-за связанных с ней затрат.