will the proper update function be called (implemented in myObject)?
Yes, it will be called.
Does it really have two pure virtual functions with the same name in the same "family"?
The second declaration (i.e., inside the entity class) does not introduce a second pure virtual function into the family: the signatures are identical, therefore update() is the only virtual function. Moreover, declaring it for the second time is not required: entity will remain abstract and will have access to the update() method, even if you delete the second declaration.
source share