In case of multiple inheritance, the constructors of inherited classes are called in the exact same order in which they are inherited and the destructors are called in the reverse order of constructors.
The ambiguity problem arises when a single class is derived from two or more parent classes having the same-named member functions. The ambiguity is shown by the derived class object which invokes one of the same-named functions.
ABaseData()
ABase()
BBaseData()
BBase()
CurrentData()
Current()
ABase::a()
Current::b()
ABase::foo()
BBase::foo()
ABase::a()
BBase::b()
~Current()
~CurrentData()
~BBase()
~BBaseData()
~ABase()
~ABaseData()