В одном случае вы можете получить несколько неожиданные результаты. То есть, если A::a()
является виртуальным, obj
на самом деле имеет тип DerivedFromA
, а DerivedFromA :: a переопределяет A::a
. В этом случае простой вызов a();
или более подробный this->a();
вызовет не A :: a, а DerivedFromA :: a ().
Теперь, это, вероятно, предназначено, так как класс A объявил () как виртуальный. Но если вы действительно не имеете это в виду, вы можете игнорировать виртуальное, записав вызов либо как
void A::b()
{
A::a(); // or
this->A::a(); //Both ignore the virtual-ness of a()
}