Let's suppose I have a class Dog that inherits from class Animal, you might want to insert a call to Animal::operator= in Dog::operator=.
What is the most readable/common way to write it?
I think I know those two...
static_cast<Animal*>(this)->operator=(other);
and
this->Animal::operator=(other);
Since you are doing it from within a child class method
Animal::operator=(other);
No need for this->
. The scope resolution syntax does exactly what was requested. I don't see a point in doing it "indirectly" with a cast.
Note also that doing it with a cast might not produce the expected result in general case, since it will not disable the dynamic resolution of virtual method call. (And, BTW, assignment operator can be declared virtual). An obvious consequence of that is that with virtual methods the "cast" variant might easily result in endless recursion.