Funções virtuais puras podem não ter uma definição embutida. Por quê?

Funções virtuais puras são aquelas funções membro que são virtuais e têm oespecificador puro ( = 0; )

Cláusula 10.4, parágrafo 2 do C ++ 03 nos diz o que é uma classe abstrata e, como observação lateral, o seguinte:

[Nota: uma declaração de função não pode fornecer um especificador puro e uma definição - end note] [Exemplo:

struct C {
virtual void f() = 0 { }; // ill-formed
};

Exemplo final]

Para aqueles que não estão muito familiarizados com o problema, observe quefunções virtuais puras podem ter definições mas a cláusula acima mencionada proíbe que essas definições apareçam em linha (lexicamente na classe). (Para usos da definição de funções virtuais puras, você pode ver, por exemplo,este GotW)

Agora, para todos os outros tipos e tipos de funções, é permitido fornecer uma definição em classe, e essa restrição parece à primeira vista absolutamente artificial e inexplicável. Venha para pensar sobre isso, parece que em segundos e subsequentes olhares :) Mas acredito que a restrição não existiria se não houvesse uma razão específica para isso.

Minha pergunta é: alguémconhecer essas razões específicas?Boa palpites também são bem-vindos.

Notas:

O MSVC permite que os PVFs tenham definições em linha. Então não se surpreenda :)a palavrainline nesta pergunta não se refere aona linha palavra-chave É suposto significarlexicamente em sala de aula

questionAnswers(5)

yourAnswerToTheQuestion