operator overloading and overriding in c++