Por que somente o construtor padrão da classe base é chamado na herança múltipla da base virtual? [duplicado]

Esta questão já tem uma resposta aqui:

herança virtual de c ++ 3 respostas

Em herança múltipla, eu tenho um virtualBase classe que é herdada por classeA e classeB. A eB são classes base deAB. Por favor veja o código abaixo. Em construtor deA eB, Base(string) construtor é chamado. Espero obter a seguinte saída:

Base::Base(std::string)

A::A()

B::B()

Mas estou recebendo a seguinte saída:

Base::Base()

A::A()

B::B()

Por que o construtor padrão deBase está sendo chamado?

#include<iostream>
#include<string>
using namespace std;

class Base{
public:
        Base(){
                cout<<__PRETTY_FUNCTION__<<endl;
        }
        Base(string n):name(n){
                cout<<__PRETTY_FUNCTION__<<endl;
        }
private:
string name;
};

class A : public virtual Base {
public:
        A():Base("A"){
                cout<<__PRETTY_FUNCTION__<<endl;
        }
private:
string name;
};

class B : public virtual  Base {
public:
        B():Base("B"){
                cout<<__PRETTY_FUNCTION__<<endl;
        }
private:
string name;
};

class AB : public A, public B{

};

int main(){
        AB a;
}

questionAnswers(1)

yourAnswerToTheQuestion