Implementações alternativas de mecanismos virtuais?
C ++ suporta ligação dinâmica através de mecanismo virtual. Mas, pelo que entendi, o mecanismo virtual é um detalhe de implementação do compilador e o padrão apenas especifica os comportamentos do que deve acontecer em cenários específicos. A maioria dos compiladores implementa o mecanismo virtual através da tabela virtual e do ponteiro virtual. E sim, eu estou ciente de como isso funciona. Portanto, minha pergunta não é sobre detalhes de implementação de ponteiros e tabelas virtuais. Minhas perguntas são:
Existem compiladores que implementam o Mecanismo virtual de outra maneira que não o ponteiro virtual e o mecanismo de tabela virtual? Tanto quanto eu vi mais (leia g ++, Microsoft visual studio) implementá-lo através da tabela virtual, mecanismo de ponteiro. Então, praticamente existem outras implementações de compilador?osizeof
de qualquer classe com apenas uma função virtual terá o tamanho de um ponteiro (vptr dentrothis
) nesse compiladorEntão, considerando que o mecanismo virtual ptr e tbl é a implementação do compilador, essa afirmação que fiz acima será sempre verdadeira?