Это всего лишь код эксперимента.
struct B
{
virtual B* operator -> () { return this; }
void foo () {} // edit: intentionally NOT virtual
};
struct D : B
{
virtual D* operator -> () { return this; }
void foo () {}
};
int main ()
{
B &pB = *new D;
pB->foo(); // calls B::foo() !
}
Я знаю, что оператор
должен вызываться с использованием объекта или ссылки; таким образом, в приведенном выше случае ссылка pB
по-прежнему является решительной для объекта B
?
Хотя это будет непрактично, но из любопытства, есть ли способ вызвать D :: operator ->
через pB
?