Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

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




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: