Что выведет следующий код?

#include <iostream> 
 
class A 
{ 
public: 
  virtual void foo() { std::cout<<"A::foo()\n"; } 
  virtual void bar() { std::cout<<"A::bar()\n"; } 
  void printFoo() { foo(); } 
  void printBar() { A::bar(); } 
}; 
 
class B: public A 
{ 
public: 
  void foo() { std::cout<<"B::foo()\n"; } 
  void bar() { std::cout<<"B::bar()\n"; } 
}; 
 
int main() 
{ 
  A* a = new B; 
  a->printFoo(); 
  a->printBar(); 
 
  return 0; 
}
A::foo() A::bar()
B::foo() A::bar()
B::foo() B::bar()