class Base {
public:
virtual void print()
{ printf("Base"); }
};
class Derived1 : public Base {
public:
virtual void print()
{
// Base::print() can be inlined
Base::print();
printf("Derived1");
}
};
class Derived2 : public Base {
public:
virtual void print()
{
// Base::print() can be inlined
Base::print();
printf("Derived2");
}
};
void function(Base *bp)
{
// Doesn't know whether
// to call Derived1::print()
// or Derived2::print(),
// won't inline:
bp->print();
// Forced to call Base::print(),
// can inline:
bp->Base::print();
Derived1 d1o;
// Forced to call
// Derived1::print(), can
// inline:
d1o.print();
}
// End of File