Hacker News new | ask | show | jobs
by dnautics 2402 days ago
You can overload any function in c++. It's multiple dispatch.
1 comments

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