compreender o vptr na herança múltipla?

Estou tentando entender a declaração no livro efetivo em c ++. A seguir, é apresentado o diagrama de herança para herança múltipl

Agora, o livro diz que é necessária memória separada em cada classe para o vptr. Também faz a seguinte declaração

ma estranheza no diagrama acima é que existem apenas três vptrs, embora quatro classes estejam envolvidas implementações são livres para gerar quatro vptrs, se necessário, mas três são suficientes (acontece que B e D podem compartilhar um vptr), e a maioria das implementações aproveita essa oportunidade para reduzir a sobrecarga gerada pelo compilado

Não pude ver nenhuma razão para haver requisito de memória separada em cada classe para o vptr. Eu entendi que o vptr é herdado da classe base, qualquer que seja o tipo de herança. Se assumirmos que ele mostrou estrutura de memória resultante com vptr herdado, como eles podem fazer a declaração de que

B e D podem compartilhar um vptr

lguém pode esclarecer um pouco sobre o vptr em herança múltipl

Precisamos de vptr separado em cada classTambém se for verdade acima, por que B e D podem compartilhar vptr?

questionAnswers(5)

yourAnswerToTheQuestion