Num curso superior de Informática não deve haver preocupação em ensinar a última novidade tecnológica, mas antes os fundamentos que permitam aos diplomados uma capacidade para aprender continuamente. No ensino da programação orientada ao objecto (POO) é importante utilizar-se uma linguagem com suporte coerente dos conceitos fundamentais do paradigma, sem características que entrem em contradição com o modelo central, sob pena da linguagem se tornar um obstáculo à aprendizagem.
Neste artigo argumenta-se precisamente que C++ é um obstáculo à aprendizagem da POO. Muitos alunos acreditam que aprender C++ lhes dará todas as competências na área da programação de que necessitarão no futuro. Esta visão errada tem como consequência que poderão ficar pior preparados para se adaptarem às mudanças a que a informática está sujeita.
C++ foi criado tendo em vista a compatibilidade com o C, pelo que todas as decisões de concepção do C++ estiveram dependentes das características, boas ou más, da linguagem anterior. Só este facto já permite questionar se tudo o que o C++ oferece será coerente, sobretudo se se considerar que o próprio C, por vezes classificado de “linguagem assembly estruturada”, dá suporte a vários paradigmas da programação. Na verdade C++ não é uma linguagem orientada ao objecto (LOO), mas uma linguagem multiparadigma, dotada dum suporte imperfeito dos conceitos da OO, misturados com conceitos oriundos de modelos de programação mais antigos.
A seguir alude-se a alguns dos principais aspectos técnicos em que C++ apresenta imperfeições no suporte à POO. São feitas comparações com algumas das LOOs mais importantes, sobretudo Eiffel e Java