Object* a = new Object();
Object* b = a;
Is there a way in the Object class to know that 'b = a' happened? I tried overloading the operator= but it didn't seem to fire.
You overloaded the operator for Object not for Object*. You cannot overload operators for primitive pointers.
You will need to write a wrapper that simulates pointers but tracks operations. Perhaps you're looking for a smart pointer like shared_ptr? It implements reference counting like it seems you're trying to do.
Is this really what you want to do?
Seems to me that you want to copy the value of a to b?
I.e:
Object* b = *a;
Otherwise you are just setting b to point to a. You'd have to overload operator = for Object* rather than operator = as part of Object for a const Object&. Unless you really do want to copy the pointer in which case what you have is fine.
Note that overloading operator = for Object* is aparrently not possible! I doubt this is actually what you where really trying to do anyways.
std::shared_ptr?