Hacker News new | ask | show | jobs
by dnautics 2410 days ago
> classic single-dispatchy languages like Swift

Is C++ not classic enough these days?

1 comments

Hard to categorize C++. The base object system is single dispatch, but the way you use the STL is multiple dispatch.
You can overload any function in c++. It's multiple dispatch.
Multiple dispatch is a little more than just overload. In C++ if you have a base class Animal with two derived Dog and Cat, and you have an Animal * pointer to Dog or Cat and do animal->walk() it will dispatch to either the Dog or Cat method (single dispatch). If you do animal->meet(animal) it will dispatch to either dog.meet(Animal * ) or cat.meet(Animal * ), not dog.meet(Dog * ) or cat.meet(Cat * ) like multiple dispatch languages do. You need a visitor pattern in C++ (or apparently templates) to get double dispatch:

https://en.wikipedia.org/wiki/Visitor_pattern#C++_example