Os desenvolvedores de kernel geralmente são o tipo de pessoa que se sente mais feliz, quando é imediatamente evidente a partir da fonte, o que o código realmente faz.
O C ++ possui muito mais recursos, que escondem o que o código faz mais do que o simples código C o oculta: sobrecargas, métodos virtuais, modelos, referências, lançamentos ... O C ++ também possui muito mais sintaxe que você precisa dominar para entender o C ++ código usando-o.
Eu acho que o poder do C ++ é uma ferramenta muito poderosa para criar bibliotecas e estruturas, o que torna o desenvolvimento de aplicativos fácil. Muitas vezes, o desenvolvedor de aplicativos C ++ ficava totalmente perdido nas entranhas cheias de modelos de uma biblioteca, mesmo quando ele é muito competente na criação de aplicativos usando essa biblioteca. E escrever corretamente uma biblioteca C ++ é uma tarefa de programação muito desafiadora e realizada apenas para fornecer uma ótima estrutura para o benefício do desenvolvedor de aplicativos. As bibliotecas C ++ não são internamente simples, são (ou podem ser ...) apenas poderosas, mas simples do ponto de vista dos programadores de aplicativos.
Porém, a API do kernel não pode ser uma API C ++, deve ser uma API independente da linguagem; portanto, a maioria das coisas boas do C ++ não seria diretamente utilizável nessa interface. Além disso, o kernel não é realmente dividido em partes de "biblioteca" e "aplicativo" desenvolvidas de forma independente, com mais esforço logicamente em uma biblioteca, para facilitar a criação de uma massa de aplicativos.
Além disso, a segurança e a estabilidade são mais críticas dentro de um kernel, e os métodos virtuais são muito mais dinâmicos e, portanto, muito mais difíceis de isolar e verificar do que os retornos de chamada simples ou outros mecanismos do tipo C.
Resumindo, embora você possa, naturalmente, escrever qualquer programa em C, incluindo um kernel como C ++, a maior parte do poder do C ++ não é bem usado no kernel. E muitos argumentam que as ferramentas de programação devem impedir que você faça coisas que não deve fazer. C ++ não faria.