Source: https://fr.slideserve.com/wilford/operator-overloading-in-c.pdf