rules of operator overloading