cpp operator overloading exercise